[简单实用系列] 微博第三方登录
2015-12-28 00:31
501 查看
微博开发文档参考 http://open.weibo.com/wiki/Android_SDK%E8%AF%B4%E6%98%8E%E6%96%87%E6%A1%A3
APP添加微博登录需要如下步骤:
1.申请APP ID
2.下载相关SDK,路径为http://open.weibo.com/wiki/index.php/SDK#Android_SDK
3.代码添加,将DEMO中AccessTokenKeeper / AbsOpenAPI / UsersAPI / Constants 拷到代码中
4.点击微博登录添加代码
APP添加微博登录需要如下步骤:
1.申请APP ID
2.下载相关SDK,路径为http://open.weibo.com/wiki/index.php/SDK#Android_SDK
3.代码添加,将DEMO中AccessTokenKeeper / AbsOpenAPI / UsersAPI / Constants 拷到代码中
4.点击微博登录添加代码
mAuthInfo = new AuthInfo(this, Constants.APP_KEY, Constants.REDIRECT_URL, Constants.SCOPE); mSsoHandler = new SsoHandler(LoginActivity.this, mAuthInfo); mSsoHandler.authorize(new AuthListener()); /* weibo login */ private AuthInfo mAuthInfo; /** * 封装了 "access_token","expires_in","refresh_token",并提供了他们的管理功能 */ private Oauth2AccessToken mAccessToken; /** * 注意:SsoHandler 仅当 SDK 支持 SSO 时有效 */ private SsoHandler mSsoHandler; /** * 当 SSO 授权 Activity 退出时,该函数被调用。 */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // SSO 授权回调 // 重要:发起 SSO 登陆的 Activity 必须重写 onActivityResults if (mSsoHandler != null) { mSsoHandler.authorizeCallBack(requestCode, resultCode, data); } } /** * 微博认证授权回调类。 * 1. SSO 授权时,需要在 {@link #onActivityResult} 中调用 {@link SsoHandler#authorizeCallBack} 后, * 该回调才会被执行。 * 2. 非 SSO 授权时,当授权结束后,该回调就会被执行。 * 当授权成功后,请保存该 access_token、expires_in、uid 等信息到 SharedPreferences 中。 */ class AuthListener implements WeiboAuthListener { @Override public void onComplete(Bundle values) { // 从 Bundle 中解析 Token mAccessToken = Oauth2AccessToken.parseAccessToken(values); //从这里获取用户输入的 电话号码信息 String phoneNum = mAccessToken.getPhoneNum(); if (mAccessToken.isSessionValid()) { // 保存 Token 到 SharedPreferences AccessTokenKeeper.writeAccessToken(LoginActivity.this, mAccessToken); ***这里即是微博第三方登录成功 *** 下面这里即是获取微博个人信息 UsersAPI userAPI = new UsersAPI(LoginActivity.this, Constants.APP_KEY, mAccessToken); userAPI.show(Long.valueOf(mAccessToken.getUid()), new SinaRequestListener()); } else { // 以下几种情况,您会收到 Code: // 1. 当您未在平台上注册的应用程序的包名与签名时; // 2. 当您注册的应用程序包名与签名不正确时; // 3. 当您在平台上注册的包名和签名与您当前测试的应用的包名和签名不匹配时。 String code = values.getString("code"); String message = getString(R.string.weibosdk_demo_toast_auth_failed); if (!TextUtils.isEmpty(code)) { message = message + "\nObtained the code: " + code; } } } @Override public void onCancel() { } @Override public void onWeiboException(WeiboException e) { } } public class SinaRequestListener implements RequestListener { //新浪微博请求接口 @Override public void onComplete(String response) { ** 这里即为获取个人信息了 } @Override public void onWeiboException(WeiboException e) { Toast.makeText(LoginActivity.this, "Auth exception : " + e.getMessage(), Toast.LENGTH_LONG).show(); } }
相关文章推荐
- myeclpse中 JRE System Library和 javaEE library的区别
- 大组合取模之:1<=n<=m<=1e6,1<=p<=1e9
- Swift - 访问控制(private,internal,public)
- 关于java web中字符编码和url编码的理解
- EasyUI表单内容整理
- Keepalived+mysqlAB高可用
- 通用des加密
- ruby: 读写excel文件
- CSS 笔记三(Tables/Box Model/Outline)
- C#学习笔记008-继承
- 【GitHub】如何在自己的项目中添加"Fork me on GitHub"标识
- JAVA 正则表达式要点总结
- 15-12.27随笔
- 开荒新系列之LeetCode: 004-Same Tree
- android 属性动画(view普通使用 和 自定义view使用)
- 监听者模式
- 开荒新系列之Leetcode: 003-Delete Node in a Linked List
- ASCII字符串转换成16进制
- react canvas
- 深入剖析Java集合框架及其显示应用(上)