Android 使用第三方登录(QQ和新浪微博)
账号申请什么的我就在这里略过了!(相信大家看看文档都能够处理的)本篇博客仅作引导用--主要提供给哪些不知道怎样入手的朋友。(如果需要更加强大的功能大家可以看一下开放平台上的文档,上面都有的)
使用QQ登录需要在QQ互联开放平台上注册一个账号并提交审核:http://connect.qq.com/intro/login
使用新浪微博登录需要到新浪微博开放平台注册账号:http://open.weibo.com/development/mobile
新浪微博登录的处理代码:(需要下载新浪微博的SDK)
import java.io.ByteArrayOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat; import org.json.JSONException;
import org.json.JSONObject; import android.app.Activity;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.TextUtils;
import android.widget.Toast; import com.hd.client.BindActivity;
import com.sina.weibo.sdk.auth.Oauth2AccessToken;
import com.sina.weibo.sdk.auth.WeiboAuthListener;
import com.sina.weibo.sdk.auth.WeiboAuth.AuthInfo;
import com.sina.weibo.sdk.exception.WeiboException;
import com.sina.weibo.sdk.net.RequestListener;
import com.sina.weibo.sdk.widget.LoginButton; /**
* 新浪微博登录工具类
* @author yw-tony
*
*/
public class SinaLoginUtil {
private static final String appkey = "你的appkey";
// http://www.sina.comhttp://www.fortrun.com
private static final String redirectUrl = "http://www.fortrun.com";
private static final String SCOPE = "email,direct_messages_read,direct_messages_write,"
+ "friendships_groups_read,friendships_groups_write,statuses_to_me_read,"
+ "follow_app_official_microblog," + "invitation_write";
/** 登陆认证对应的listener */
private AuthListener mLoginListener = new AuthListener();
/** 登出操作对应的listener */
private LogOutRequestListener mLogoutListener = new LogOutRequestListener();
private Context context;
private AuthInfo authInfo = null;
public String token = ",";private SinaLoginUtil(){}
private static SinaLoginUtil instance = new SinaLoginUtil();
public static SinaLoginUtil getInstance(){
return instance;
}
public void initSina(Context context,LoginButton loginButton){
this.context = context;
// 创建授权认证信息
authInfo = new AuthInfo(context, "你的appkey",redirectUrl, SCOPE);
loginButton.setWeiboAuthInfo(authInfo, mLoginListener);
}
/**
* 登入按钮的监听器,接收授权结果。
*/
private class AuthListener implements WeiboAuthListener {
@Override
public void onComplete(Bundle values) {
final Oauth2AccessToken accessToken = Oauth2AccessToken.parseAccessToken(values);
if (accessToken != null && accessToken.isSessionValid()) {
/*String date = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(
new java.util.Date(accessToken.getExpiresTime()));*/
// String format = getString(R.string.weibosdk_demo_token_to_string_format_1);
// mTokenView.setText(String.format(format, accessToken.getToken(), date));
AccessTokenKeeper.writeAccessToken(context, accessToken);
}
} /**
* 登出按钮的监听器,接收登出处理结果。(API 请求结果的监听器)
*/
private class LogOutRequestListener implements RequestListener {
@Override
public void onComplete(String response) {
if (!TextUtils.isEmpty(response)) {
try {
JSONObject obj = new JSONObject(response);
String value = obj.getString("result"); if ("true".equalsIgnoreCase(value)) {
AccessTokenKeeper.clear(context);
// mTokenView.setText(R.string.weibosdk_demo_logout_success);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
} @Override
public void onComplete4binary(ByteArrayOutputStream responseOS) {
// Do nothing
} @Override
public void onIOException(IOException e) {
// mTokenView.setText(R.string.weibosdk_demo_logout_failed);
} @Override
public void onError(WeiboException e) {
// mTokenView.setText(R.string.weibosdk_demo_logout_failed);
}
}
}
QQ登录:
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject; import android.app.Activity;
import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;
import android.widget.Toast; import com.google.gson.JsonObject;
import com.hd.client.BindActivity;
import com.tencent.tauth.IUiListener;
import com.tencent.tauth.Tencent;
import com.tencent.tauth.UiError; /**
* 使用QQ登陆工具类
* @author yw-tony
*
*/
public class QQLoginUtil {
public String token = ",";
public Tencent tencen = null;
private static String APP_ID = "你的Appid";
private Context context;
private QQLoginUtil(){}
private static QQLoginUtil instance = new QQLoginUtil();
public static QQLoginUtil getInstance(){
return instance;
} public void initTencen(Context context){
tencen = Tencent.createInstance(APP_ID, context);
this.context = context;
} public void qqLogin(Activity activity){
if (!tencen.isSessionValid()) {
IUiListener listener = new BaseUiListener() {
@Override
protected void doComplete(JSONObject values) {
/*updateUserInfo();
updateLoginButton();*/
}
};
tencen.login(activity, "all", listener);
} else {
tencen.logout(activity);
// updateUserInfo();
// updateLoginButton();
}
}
private class BaseUiListener implements IUiListener { @Override
public void onComplete(JSONObject response) {
// Util.showResultDialog(MainActivity.this, response.toString(), "登录成功");
Log.e("响应字符串", response.toString());
doComplete(response);
} protected void doComplete(final JSONObject values) { } @Override
public void onError(UiError e) {
Log.e("错误信息", e.errorDetail);
// Util.toastMessage(MainActivity.this, "onError: " + e.errorDetail);
// Util.dismissDialog();
} @Override
public void onCancel() {
Log.e("取消了当前的登录操作", "取消了当前的登录操作");
// Util.toastMessage(context, "onCancel: ");
// Util.dismissDialog();
}
}
}
Android 使用第三方登录(QQ和新浪微博)的更多相关文章
- Android UmengShareSDK第三方登录
Android UmengShareSDK 第三方登录- 今天就不废话了,集成平台第三方登录.市面上集成平台有shareSDK 和 Ument两种,shareSDK的ipa和服务好些,如果自己研究会很 ...
- android实现第三方登录之QQ登录
首先,当然是在腾讯开放平台(http://open.qq.com/)注册成为开发者,然后获取APP ID 1.下载SDK http://wiki.open.qq.com/wiki/mobile/SDK ...
- 第三方登录 QQ登录 人人网登录 新浪微博登录
http://www.pp6.cn/Index.aspx http://www.pp6.cn/Login.aspx 网站有自己的账号系统,这里使用的第三方登录仅仅是获取第三方账号的唯一id,昵称,性别 ...
- 安卓Android第三方登录-QQ登录
要实现QQ第三方登录,其实只需要一个封装类:QQLoginManager 几乎 三行代码 就实现QQ登录功能 这里先给出Github开源项目地址,项目下有详细的使用说明 下面就开始详细说一说怎么实 ...
- Android ShareSDKQQ 第三方登录so easy?
昨天群里有个群友看到我之前做的那个qq第三方登录怎么做的,于是乎思考了一下,还是决定写一篇博客记录下.事实上都不难的,事实上之前我又写到FaceBook的第三方登录不知道看下这Android集成Fac ...
- [置顶]
Android ShareSDKQQ 第三方登录so easy?
昨天群里有个群友看到我之前做的那个qq第三方登录怎么做的,于是乎思考了一下,还是决定写一篇博客记录下,其实都不难的,其实之前我又写到FaceBook的第三方登录不知道看下这Android集成FaceB ...
- Android 微信第三方登录(个人笔记)
今天在写微信登录,花了半天时间搞定.然后写下自己的笔记,希望帮助更多的人...欢迎各位指教. 微信授权登录,官方说的不是很清楚.所以导致有一部分的坑. 微信注册应用平台的应用签名,下载 微信签名生成工 ...
- 第三方登录 ----QQ登录
学习之前,请大家先看一下oAuth协议. 首先呢,我们进入QQ互联的官方网站 http://connect.qq.com登入我们自己的QQ号,没有QQ号的小伙伴可以忽略本篇博文分享!
- android 第三方登录 --- QQ
1,jar包 2,配置AndroidManifest.xml <activity android:name=".login.LoginActivity" android:co ...
随机推荐
- OpenStack的架构详解[精51cto]
OpenStack既是一个社区,也是一个项目和一个开源软件,它提供了一个部署云的操作平台或工具集.其宗旨在于,帮助组织运行为虚拟计算或存储服务的云,为公有云.私有云,也为大云.小云提供可扩展的.灵活的 ...
- linux上,mysql使用聚合函数group by 时报错:SELECT list is not in GROUP BY clause and contains nonaggre的问题
之前在windows上测试是可以正常使用的,但是上传到Linux上后,就报错: Expression # of SELECT list is not in GROUP BY clause and co ...
- 【代码笔记】iOS-自定义alertView
一,效果图. 二,代码. ViewController.h #import <UIKit/UIKit.h> @interface ViewController : UIViewContro ...
- 【代码笔记】iOS-将字符串中特定后的字变成红色
一,效果图. 二,代码. ViewController.m - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup ...
- 分布式Session一致性解决方案有哪些?
1.使用cookie代替session(不安全,不推荐使用) 2.使用数据库存储session(效率低,不推荐使用) 3.使用nginx反向代理ip绑定方法,同一个ip只能在同一台服务器上进行访问(不 ...
- SD从零开始13-14
SD从零开始13 使用条件记录(Working with Condition Records) 定价报表—客户特定价格Pricing Reports-customer-specific prices ...
- Asp Url汉字乱码的问题
1.js <a target="_blank" href="/asp/download.asp?File=' + escape(item.FileName) + ' ...
- 如何在单元测试时隔离ORM
在项目中需要对DAL层进行单元测试,如果直接操作数据库,首先测试速度会大大下降,而且让单元测试直接使用外部依赖,很可能带来后续维护的不便,所以有必要对数据库隔离,然后单独测试DAL层.由于使用了ORM ...
- Why do collection classes appear
package com.itheima_01; import java.util.ArrayList; /* * 为什么会出现集合类: * 我们学习的是面向对象编程语言,而面向对象编程语言对事物的描述 ...
- 记一款bug管理系统(bugdone.cn)的开发过程(1) -- 为什么要开发一款bug开发系统
对于从事软件研发行业的同学来说bug管理系统肯定不陌生.本人03年左右开始正式成为一名码农,工作期间接触过若干bug管理系统,如JIRA等,不过都是自行部署在公司内网的. 几年过去了,现在已经是互联网 ...