android 第三方登录---新浪微博

时间:2023-01-07 23:49:41

android 第三方登录---新浪微博

android 第三方登录---新浪微博

android 第三方登录---新浪微博

1、AndroidManiFest.xml设置,这里我只是简单的用授权,获取基本信息,所以只用了这一个

 <!--微博-->
<!-- 必须注册在微博授权,分享微博时候用到 -->
<activity
android:name= "com.sina.weibo.sdk.component.WeiboSdkBrowser"
android:configChanges= "keyboardHidden|orientation"
android:exported= "false"
android:windowSoftInputMode="adjustResize" >
</activity >

2,java调用

 public 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";
public void weibo(){//直接调用该方法
// 获取当前已保存过的 Token
Oauth2AccessToken mAccessToken = AccessTokenKeeper.readAccessToken(this);
// 快速授权时,请不要传入 SCOPE,否则可能会授权不成功
//11111111换成你自己的app key,第二个就是之前设置那个回调页
AuthInfo mAuthInfo = new AuthInfo(this,"11111111","https://api.weibo.com/oauth2/default.html", SCOPE);
mSsoHandler = new SsoHandler(LoginActivity.this, mAuthInfo);
//Web---网页输入账号密码
//mSsoHandler.authorizeWeb(new AuthListener());
//sso---客户端
mSsoHandler. authorizeClientSso(new AuthListener());
//all In one先调用客户端,如果没有客户端就调用web
mSsoHandler. authorize(new AuthListener());
}

监听--从demo里抠出来的

 /**
* 微博认证授权回调类。
* 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
// updateTokenView(false);
// 保存 Token 到 SharedPreferences
AccessTokenKeeper.writeAccessToken(LoginActivity.this, mAccessToken);
Toast.makeText(LoginActivity.this,"授权成功", Toast.LENGTH_SHORT).show();
//打印信息
String date = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(
new java.util.Date(mAccessToken.getExpiresTime()));
String format = "Token:%1$s \\n有效期:%2$s";
Log.i("授权成功","信息111:"+String.format(format, mAccessToken.getToken(), date));
String message = String.format(format, mAccessToken.getToken(), date);
Log.i("授权成功","信息222:"+message);
if (true) {
message = "Token 仍在有效期内,无需再次登录。"+ "\n" + message;
}
Log.i("授权成功","信息333:"+message);
} else {
// 以下几种情况,您会收到 Code:
// 1. 当您未在平台上注册的应用程序的包名与签名时;
// 2. 当您注册的应用程序包名与签名不正确时;
// 3. 当您在平台上注册的包名和签名与您当前测试的应用的包名和签名不匹配时。
String code = values.getString("code");
String message = "授权失败";
if (!TextUtils.isEmpty(code)) {
message = message + "\nObtained the code: " + code;
}
Toast.makeText(LoginActivity.this, message, Toast.LENGTH_LONG).show();
}
}
@Override
public void onCancel() {
Toast.makeText(LoginActivity.this,"取消", Toast.LENGTH_LONG).show();
}
public void onWeiboException(WeiboException e) {
Toast.makeText(LoginActivity.this,
"Auth exception : " + e.getMessage(), Toast.LENGTH_LONG).show();
}
}

回调

 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Constants.ACTIVITY_OK){
// SSO 授权回调
// 重要:发起 SSO 登陆的 Activity 必须重写 onActivityResults
if (mSsoHandler != null) {
Log.i("新浪微博登陆返回","返回");
//不能少
mSsoHandler.authorizeCallBack(requestCode, resultCode, data);
}
}
super.onActivityResult(requestCode, resultCode, data);
}

这样授权就有了,下边就是获取授权用户的信息了

3,利用Oauth2AccessToken获取信息

 // 获取用户信息接口
//mAccessToken可以是你之前授权获取的那个,也可以
// 获取当前已保存过的 Token
//Oauth2AccessToken mAccessToken = AccessTokenKeeper.readAccessToken(this);
UsersAPI mUsersAPI = new UsersAPI(LoginActivity.this, "你的APP_KEY", mAccessToken);
long uid = Long.parseLong(mAccessToken.getUid());
mUsersAPI.show(uid, mListener);

监听

 /**
* 微博 OpenAPI 回调接口。
*/
private RequestListener mListener = new RequestListener() {
@Override
public void onComplete(String response) {
if (!TextUtils.isEmpty(response)) {
//LogUtil.i(TAG, response);
// 调用 User#parse 将JSON串解析成User对象
User user = User.parse(response);
if (user != null) {
Toast.makeText(LoginActivity.this,
"获取User信息成功,用户昵称:" + user.screen_name,
Toast.LENGTH_LONG).show();
} else {
Toast.makeText(LoginActivity.this, response, Toast.LENGTH_LONG).show();
}
}
} @Override
public void onWeiboException(WeiboException e) {
//LogUtil.e(TAG, e.getMessage());
ErrorInfo info = ErrorInfo.parse(e.getMessage());
Toast.makeText(LoginActivity.this, info.toString(), Toast.LENGTH_LONG).show();
}
};

微博官方的demo地址:https://github.com/sinaweibosdk/weibo_android_sdk

android 第三方登录---新浪微博

WeiboSDK

android 第三方登录---新浪微博

WeiboSDKDemo

android 第三方登录---新浪微博

														
		

android 第三方登录---新浪微博的更多相关文章

  1. Android第三方授权&lpar;新浪微博篇&rpar;

    Android第三方认证新浪微博,相对微信,也比较简单,并且sina给了一个sdk和sdkdemo,这个demo封装了许多,但是自己不准备记录这个demo,而是直接使用sdk 同样去sina官方下载s ...

  2. 安卓Android第三方登录-QQ登录

    要实现QQ第三方登录,其实只需要一个封装类:QQLoginManager 几乎 三行代码 就实现QQ登录功能 这里先给出Github开源项目地址,项目下有详细的使用说明   下面就开始详细说一说怎么实 ...

  3. android 第三方登录 --- QQ

    1,jar包 2,配置AndroidManifest.xml <activity android:name=".login.LoginActivity" android:co ...

  4. Android第三方登陆之新浪微博Weibo篇(原生登陆授权)

    前言 Android第三方登录可以说是非常的常见,今天主要先说一下新浪微博第三方登陆授权. SDK版本支持 SDK v3.0已经发布了支持iPhone和Android的版本. 须将你的应用的包名签名信 ...

  5. egret打包android &plus; android微信登录--小结

    公司用egret做了款游戏,需要打android包,做安卓端的微信登录,于是乎开始了第一安卓上的打包,正的是一脸懵 首先遇到的问题有如下: 1. egret打安卓包时经常运行不起来, 主要是gradl ...

  6. 实现QQ、微信、新浪微博和百度第三方登录&lpar;Android Studio&rpar;

    前言: 对于大多数的APP都有第三方登录这个功能,自己也做过几次,最近又有一个新项目用到了第三方登录,所以特意总结了一下关于第三方登录的实现,并拿出来与大家一同分享: 各大开放平台注册账户获取AppK ...

  7. Android 实现QQ、微信、新浪微博和百度第三方登录

    前言: 对于大多数的APP都有第三方登录这个功能,自己也做过几次,最近又有一个新项目用到了第三方登录,所以特意总结了一下关于第三方登录的实现,并拿出来与大家一同分享: 各大开放平台注册账户获取AppK ...

  8. Android中用友盟实现QQ的第三方登录

    //首先应该去友盟的官网注册你的账号,创建一个应用,获得它的APPkey,也可以用它的API上的appkey,下载SDK,下面根据API文档一步步实现就行了. //下面是友盟的APi文档 1.  产品 ...

  9. android开发学习——facebook第三方登录,看了你不会后悔

    给APP用原生android进行facebook第三方登录. 我们做一件事情,首先得了解其原理,这样才不会迷茫,才知道自己做到什么程度了,心里才会有底. 所以,第一步,了解第三方登录的原理:下面贴一些 ...

随机推荐

  1. 查找数据库中重复的值的数据,having的使用,count&lpar;1&rpar;&comma;sum等聚会函数

    通过having代替where来使用count(1),sum()等函数.譬如如下数据id value1 21 32 33 53 6 可以写个语句统计value的分组 在这里,可以省略前面的sum(va ...

  2. PyQt5应用与实践

    一个典型的GUI应用程序可以抽象为:主界面(菜单栏.工具栏.状态栏.内容区域),二级界面(模态.非模态),信息提示(Tooltip),程序图标等组成.本篇根据作者使用PyQt5编写的一个工具,介绍如何 ...

  3. 算法系列5《SSF33》

    SSF33算法是以128位分组为单位进行运算,密钥长度为16字节,该算法也可以被用于安全报文传送和MAC机制密文运算. 使用SSF33算法和基于3-DES的对称加密机制使用相同长度的密钥,能够同原有的 ...

  4. VS2012 直接浏览网页时报错

    VS2012 直接浏览网页时报错  "托管管道模式不能为集成" 只要在configuration文件里面添加   <system.webServer>     < ...

  5. 机器学习&lpar;1&rpar;之梯度下降&lpar;gradient descent&rpar;

    机器学习(1)之梯度下降(gradient descent) 题记:最近零碎的时间都在学习Andrew Ng的machine learning,因此就有了这些笔记. 梯度下降是线性回归的一种(Line ...

  6. Storm概念介绍

    Storm核心概念如下:  1.Tuple:元组                Tuple即元组,是一个拓扑Topology中的Spout和Bolt组件之间数据传递的基本单元.元组中的字段可以是任何类 ...

  7. POJ--2391--Ombrophobic Bovines【分割点&plus;Floyd&plus;Dinic优化&plus;二分法答案】最大网络流量

    联系:http://poj.org/problem?id=2391 题意:有f个草场,每一个草场当前有一定数目的牛在吃草,下雨时它能够让一定数量的牛在这里避雨,f个草场间有m条路连接,每头牛通过一条路 ...

  8. SDK&comma;API概念

    什么是SDK什么是API? SDK 就是 Software Development Kit 的缩写,就是"软件开发工具包". 这是一个覆盖面相当广泛的名词,可以这么说:辅助开发某一 ...

  9. Tarjan总结(缩点&plus;割点&lpar;边&rpar;&plus;双联通&plus;LCA&plus;相关模板)

    Tarjan求强连通分量 先来一波定义 强连通:有向图中A点可以到达B点,B点可以到达A点,则称为强连通 强连通分量:有向图的一个子图中,任意两个点可以相互到达,则称当前子图为图的强连通分量 强连通图 ...

  10. 牛客寒假算法基础集训营3B 处女座的比赛资格(用拓扑排序解决DAG中的最短路)

    链接:https://ac.nowcoder.com/acm/contest/329/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...