Android集成新浪微博第三方登录的方法_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程序设计有所帮助。

时间: 2024-09-19 02:58:18

Android集成新浪微博第三方登录的方法_Android的相关文章

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

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

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

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

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

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

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

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

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

转:http://www.cnblogs.com/neozhu/p/3458759.html   Android Studio导入第三方类库的方法 本人也刚刚开始尝试做android app的开发,听说android studio是Google支持的android 应用开发工具,所以想应该肯定比Eclipse好用吧,反正以前没有java开发经验,索性就从android studio开始学,以前一直是做.net的开发,最近使用了Eclipse,Android Studio之后发现Visual st

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

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

Android性能优化以及数据优化方法_Android

Android性能优化-布局优化 今天,继续Android性能优化 一 编码细节优化. 编码细节,对于程序的运行效率也是有很多的影响的.今天这篇主题由于技术能力有限,所以也不敢在深层去和大家分享.我将这篇主题分为以下几个小节: (1)缓存 (2)数据 (3)延迟加载和优先加载 1> 缓存 在Android中缓存可以用在很多的地方:对象.IO.网络.DB等等..对象缓存能减少内存分配,IO缓存能对磁盘的读写访问,网络缓存能减少对网络的访问,DB缓存能减少对数据库的操作. 缓存针对的场景在Andro

Android编程之阴影(Shadow)制作方法_Android

本文实例讲述了Android编程之阴影(Shadow)制作方法.分享给大家供大家参考,具体如下: 先看运行效果图如下: 阴影制作:包括各种形状(矩形,圆形等等),以及文字等等都能设置阴影. 阴影制作是什么原理呢? 其实很简单,你需要设置阴影的东西被看作一个主层.然后在主层下面画一个阴影层. 阴影制作涉及到一个重要函数: public void setShadowLayer (float radius, float dx, float dy, int color) 参数: radius:阴影半径

Android实现授权访问网页的方法_Android

本文实例讲述了Android授权访问网页的实现方法,即使用Webview显示OAuth Version 2.a ImplicitGrant方式授权的页,但是对于移动终端不建议使用Authorize code grant方式授权. 具体功能代码如下所示: import android.annotation.SuppressLint; import android.app.Activity; import android.content.Intent; import android.graphics