Android集成新浪微博第三方登录的方法

本文实例讲述了Android集成新浪微博第三方登录的方法。分享给大家供大家参考。具体实现方法如下:

1.下载微博的sdk ,导入微博的jar包两个 android-support-v4.jar和weibosdkcore.jar两个包

2.把新浪微博中的demo_src中SDK中的com,导入到项目中

3.用demo中的constants,主要是参数设置,将里面的参数改成自己的参数。

4.编写代码,主要步骤如下:

代码如下:

// 初始化微博对象
mWeiboAuth = new WeiboAuth(this, Constants.APP_KEY, Constants.REDIRECT_URL, Constants.SCOPE);
// sinaAuthorWebView.loadUrl("https://open.weibo.cn/oauth2/authorize?scope=email&redirect_uri=http://www.sina.com&state=flashmemoAndroid&forcelogin=true&display=mobile&client_id=2529326755");
//获取code
mWeiboAuth.authorize(new AuthListener(), WeiboAuth.OBTAIN_AUTH_CODE);
// 第二步:通过 Code 获取 Token
fetchTokenAsync(mCode, WEIBO_DEMO_APP_SECRET);

5.主要的核心代码如下:

代码如下:

/**
* 微博认证授权回调类。
*/
class AuthListener implements WeiboAuthListener {

@Override
public void onComplete(Bundle values) {
if (null == values) {
// 获取code失败
return;
}
String code = values.getString("code");
if (TextUtils.isEmpty(code)) {
// 获取code失败 
return;
}
// 获取code成功
mCode = code;
// 获取code成功,第二步:通过 Code 获取 Token
fetchTokenAsync(mCode, WEIBO_DEMO_APP_SECRET);
}

@Override
public void onCancel() {
Log.e("LoginActivity", "sinaAuth cancel");
//如果取消授权,那么可以调到登录页面等
}

@Override
public void onWeiboException(WeiboException e) {
Log.e("LoginActivity", "sinaAuth exception :" + e.getMessage());
}
}

/**
* 该 Handler 配合 {@link RequestListener} 对应的回调来更新 UI。
*/
private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {

switch (msg.what) {
case MSG_FETCH_TOKEN_SUCCESS:
// 显示 Token
// String date = new
// SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(
// new java.util.Date(mAccessToken.getExpiresTime()));
// String format =
// getString(R.string.weibosdk_demo_token_to_string_format_1);

// 获取tocken成功
break;

case MSG_FETCH_TOKEN_FAILED:
// Toast.makeText(WBAuthCodeActivity.this,
// R.string.weibosdk_demo_toast_obtain_token_failed,
// Toast.LENGTH_SHORT).show();
// 获取tocken失败
break;
default:
break;
}
};
};

/**
* 异步获取 Token。
*
* @param authCode
*            授权 Code,该 Code 是一次性的,只能被获取一次 Token
* @param appSecret
*            应用程序的 APP_SECRET,请务必妥善保管好自己的 APP_SECRET,
*            不要直接暴露在程序中,此处仅作为一个DEMO来演示。
*/
public void fetchTokenAsync(String authCode, String appSecret) {
/*
* LinkedHashMap<String, String> requestParams = new
* LinkedHashMap<String, String>();
* requestParams.put(WBConstants.AUTH_PARAMS_CLIENT_ID,
* Constants.APP_KEY);
* requestParams.put(WBConstants.AUTH_PARAMS_CLIENT_SECRET,
* appSecretConstantS.APP_SECRET);
* requestParams.put(WBConstants.AUTH_PARAMS_GRANT_TYPE,
* "authorization_code");
* requestParams.put(WBConstants.AUTH_PARAMS_CODE, authCode);
* requestParams.put(WBConstants.AUTH_PARAMS_REDIRECT_URL,
* Constants.REDIRECT_URL);
*/
WeiboParameters requestParams = new WeiboParameters();
requestParams.add(WBConstants.AUTH_PARAMS_CLIENT_ID, Constants.APP_KEY);
requestParams.add(WBConstants.AUTH_PARAMS_CLIENT_SECRET, appSecret);
requestParams.add(WBConstants.AUTH_PARAMS_GRANT_TYPE,
"authorization_code");
requestParams.add(WBConstants.AUTH_PARAMS_CODE, authCode);
requestParams.add(WBConstants.AUTH_PARAMS_REDIRECT_URL,
Constants.REDIRECT_URL);

/**
* 请注意: {@link RequestListener} 对应的回调是运行在后台线程中的, 因此,需要使用 Handler 来配合更新
* UI。
*/
AsyncWeiboRunner.request(OAUTH2_ACCESS_TOKEN_URL, requestParams,
"POST", new RequestListener() {
@Override
public void onComplete(String response) {
LogUtil.d(TAG, "get token Response: " + response);

Oauth2AccessToken token = Oauth2AccessToken
.parseAccessToken(response);
if (token != null && token.isSessionValid()) {

LogUtil.d(TAG, "Success! " + token.toString());

mAccessToken = token;
// 获取token成功,可以做出相应的处理

// 通知UI改变
mHandler.obtainMessage(MSG_FETCH_TOKEN_SUCCESS)
.sendToTarget();

@Override
public void onComplete4binary(
ByteArrayOutputStream responseOS) {
LogUtil.e(TAG, "onComplete4binary...");
mHandler.obtainMessage(MSG_FETCH_TOKEN_FAILED)
.sendToTarget();
}

@Override
public void onIOException(IOException e) {
LogUtil.e(TAG, "onIOException: " + e.getMessage());
mHandler.obtainMessage(MSG_FETCH_TOKEN_FAILED)
.sendToTarget();
}

@Override
public void onError(WeiboException e) {
LogUtil.e(TAG, "WeiboException: " + e.getMessage());
mHandler.obtainMessage(MSG_FETCH_TOKEN_FAILED)
.sendToTarget();
}
});
}

主要是改写complete相应的方法即可。handler主要是通知界面做出改变
UI Handler的参数调用问题的参数

代码如下:

/** 获取 Token 成功或失败的消息 */
private static final int MSG_FETCH_TOKEN_SUCCESS = 1;
private static final int MSG_FETCH_TOKEN_FAILED = 2;

希望本文所述对大家的Android程序设计有所帮助。

(0)

相关推荐

  • Android微信第三方登录(个人笔记)

    今天在写微信登录,花了半天时间搞定.然后写下自己的笔记,希望帮助更多的人.欢迎各位指教. 微信授权登录,官方说的不是很清楚.所以导致有一部分的坑. 微信注册应用平台的应用签名,下载 微信签名生成工具 输入项目的packageName也可以查看到. (注意:debug.Release 一定要区分,因为2种生成的微信签名不一致,会导致没有跳转.回调....一般在微信开发者上面注册的是正式环境打包好的.) 申请微信开发者账号.应用申请省略. 1. AndroidManifest.xml 权限 <!--

  • Android第三方登录之腾讯QQ登录的实例代码

    布局文件 <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="登录成功" android:textSize="25sp" android:layout_marginTop="100dp" /> 清单文件中的配置 <activity android:n

  • Android实现第三方授权登录、分享以及获取用户资料

    由于公司项目的需要,要实现在项目中使用第三方授权登录以及分享文字和图片等这样的效果,几经波折,查阅了一番资料,做了一个Demo.实现起来的效果还是不错的,不敢独享,决定写一个总结的教程,供大家互相交流.学习和参考,只求能和大家共同进步.希望能多多支持! 这篇文章中,我们使用到了Share SDK,它是为iOS.Android.WP8的APP提供社会化功能的一个组件,目前支持如QQ.微信.新浪微博.腾讯微博.开心网.人人网.豆瓣.网易微博.搜狐微博.facebook.twitter.google+

  • Android第三方登录之QQ登录

    本文实例为大家分享了Android第三方登录之QQ的具体代码,供大家参考,具体内容如下 第三方登录之QQ 代码区 public class MainActivity extends AppCompatActivity { private Button btn; private TextView tv; private ImageView image; @Override protected void onCreate(Bundle savedInstanceState) { super.onCr

  • 微信第三方登录Android实现代码

    记录一下微信第三方实现登录的方法.还是比较简单. 一.必要的准备工作 1.首先需要注册并被审核通过的微信开放平台帐号,然后创建一个移动应用,也需要被审核: 2.然后到资源中心下载开发微信所需的工具: 下载的网址:点击打开链接,有一个是SDK,一个是签名生成工具还有一个范例代码. 3.将SDK文件夹lib下的jar文件libammsdk.jar导入到项目工程中: 4.你的测试手机需要装好微信客户端: 5.在项目的AndroidManifest.xml文件中添加如下的权限: <uses-permis

  • Android调用第三方QQ登录代码分享

    本文为大家分享了调用QQ登录的相关代码,希望对大家有帮助,减少项目开发的时间,具体内容如下 1.去QQ开放平台注册帐号(http://open.qq.com/),为应用申请QQ的APP_ID , 并下载相关的jar包,放到工程的lib目录下. 2.在Manifest.xml里注册QQ相关的Activity,代码如下 <activity android:name="com.tencent.connect.common.AssistActivity" android:screenOr

  • Android 第三方登录、分享(ShareSDK、友盟)

    为下边的项目做准备,写一个第三方登录.分享的demo.分别使用sharesdk和友盟来实现. 先说一下我对两者的使用上的感觉,个人感觉sharesdk比友盟更好一点,好在哪里呢?好在人工服务上.在集成的过程中遇到了各种问题,但是sharesdk的人工服务做的很好,能给答疑解惑,提供解决问题的方法! 接下来上代码(本文使用android studio开发,sharesdk版本v2.7.7,友盟版本v6.0.0): 一.使用sharesdk(sharesdk版本v2.7.7)来集成: 1.要去官网:

  • Android实现第三方登录的上拉展开,下拉隐藏,下拉隐藏示例

    Android的UI和交互是很重要的一部分,直接影响到用户对软件的体验.随着项目经验的积累,发现Android中动画的运用越来越重要.本篇文章抽出了项目登录界面中实现的第三方登录,用户可以上拉展开,下拉隐藏第三方登录这么一个效果,提高用户和软件的交互性. 实现效果: (1)activity_main.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android=&q

  • Android实现使用微信登录第三方APP的方法

    本文实例讲述了Android实现使用微信登录第三方APP的方法.分享给大家供大家参考,具体如下: 使用微信登录APP,免去注册过程,现在已经有很多的类似应用了.集成该功能过程不复杂,但还是有一些地方需要注意的. 开始之前,需要做下面的准备工作. 1.到微信开放平台注册你的APP,并申请开通微信登录的权限.参考这里: https://open.weixin.qq.com// 2.下载Android SDK和签名查看工具,请参考: https://open.weixin.qq.com/cgi-bin

  • Android集成新浪微博第三方登录的方法

    本文实例讲述了Android集成新浪微博第三方登录的方法.分享给大家供大家参考.具体实现方法如下: 1.下载微博的sdk ,导入微博的jar包两个 android-support-v4.jar和weibosdkcore.jar两个包 2.把新浪微博中的demo_src中SDK中的com,导入到项目中 3.用demo中的constants,主要是参数设置,将里面的参数改成自己的参数. 4.编写代码,主要步骤如下: 复制代码 代码如下: // 初始化微博对象 mWeiboAuth = new Wei

  • Android端实现单点登录的方法详解

    前言 单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任.单点登录在大型网站里使用得非常频繁,例如像阿里巴巴这样的网站,在网站的背后是成百上千的子系统,用户一次操作或交易可能涉及到几十个子系统的协作,如果每个子系统都需要用户认证,不仅用户会疯掉,各子系统也会为这种重复认证授权的逻辑搞疯掉.实现单点登录说到底就是要解决如何产生和存储那个信任,再就是其他系统如何验证这个信任的有效

  • 新浪微博第三方登录界面上下拉伸图片之第三方开源PullToZoomListViewEx(二)

    上篇文章给大家介绍了新浪微博第三方登录界面上下拉伸图片之第三方开源PullToZoomListViewEx(一),需要了解的朋友可以点击了解详情. 这是PullZoomView在ScrollView实现,Android PullZoomView在ScrollView的实现是:PullToZoomScrollViewEx 下载地址:https://github.com/Frank-Zhu/PullZoomView 本文要说的PullToZoomScrollViewEx则以另外一种方式在Java代码

  • Android 友盟第三方登录与分享的实现代码

    前言 最近项目中又一次需要集成友盟的三方登录与分享,之前没有记录过,所以这次来写一下... 准备工作 1.注册友盟账号创建应用,获取key:申请地址 http://www.umeng.com 2.对对应的平台(腾讯.微信.新浪等等)申请第三方账号,获取key和密码 集成步骤 因为shareSDK分享与第三方登录集成方式类似(共用jar包),所以我就一起说了. 1.下载shareSDK分享的SDK 下载地址: https://developer.umeng.com/sdk 2.导入jar与res

  • Android Studio导入第三方类库的方法

    一.导入*.jar包 1.直接copy ①复制*.jar包,粘贴到主工程目录的libs下边 ②右键,将此jar包设置成自己的library ③然后在工程右键的选择项目单击Open Module Settings,在Dependencies中选择添加文件 这样,就表示jar包添加成功了. 打开app目录下的build.gradle 表示添加成功. 2.build.gradle里边添加一句: 复制代码 代码如下: compile fileTree(include: ['*.jar'], dir: '

  • Django集成CAS单点登录的方法示例

    CAS 全称集中式认证服务(Central Authentication Service),是实现单点登录(SSO)的一中手段. CAS 的通讯流程图如下(图片来自Google图库): 对于本文用户可感知的层面,认证过程如下: 前端访问后端登录接口 后端返回重定向到 CAS 服务器的登录页面,并携带当前用户访问的网页链接 用户登录,浏览器发送请求到 CAS 服务器进行认证 CAS 认证通过,将本次登录保存到会话,返回回调地址给后端 后端返回重定向请求给前端 前端重定向到跳转登录前的页面 中间涉及

  • 浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑

    前言 绝大多数网站都集成了第三方登录,降低了注册门槛,增强了用户体验.最近看了看 QQ 互联上 QQ 登录的接口文档.接入 QQ 登录的一般流程呢,是这样的:先申请开发者 -> 然后创建应用(拿到一组 AppId 和 AppKey)-> 获取 access_token -> 获取 openid -> 调用 openApi 访问或修改用户信息. 然而,从申请个人开发者开始,坑就来了. 1. 申请(个人)开发者 QQ 互联中申请开发者信息的页面,一些重点太过简陋,缺失细节,比如身份证正

  • unity5.6 导出gradle工程 Android Studio 导入问题及处理方法

    导入后gradle building 一直到跑,卡住了,一般是gradle没有下载,又下不下来的原因. 去  http://services.gradle.org/distributions/  下载 5.6 需要导出的工程的gradle  gradle-2.10-all, gradle-2.14.1-all ,gradle-3.2-bin,gradle-3.3-all  设置使用离线的gradle 如果工程比较大的话 会难产报一个叫做 java out of memory 错误 在C:\Use

随机推荐