一. 配置
SDK 地址:https://github.com/sinaweibosdk/weibo_android_sdk
下载下来在lib下有一个.aar文件,copy到你项目下的lib中
权限:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
在model下的build.gradle,在android外添加以下:
repositories { flatDir { dirs 'libs' } }
在dependencies中添加:
compile 'com.sina.weibo.sdk:core:4.1.0:openDefaultRelease@aar'
在AndroidMainfest.xml中添加 :
<meta-data android:name="WEIBO_APPKEY" android:value="0123456789" /> //新浪微博APP_KEY <meta-data android:name="WEIBO_CHANNEL" android:value="weibo" />
二. 实现
Constants.class
package com.example.thridlogin; /** * 该类定义了微博授权时所需要的参数。 * * @author SINA * @since 2013-09-29 */ public interface Constants { //2045436852 /** 当前 DEMO 应用的 APP_KEY,第三方应用应该使用自己的 APP_KEY 替换该 APP_KEY */ public static final String APP_KEY = "0123456789 "; /** * 当前 DEMO 应用的回调页,第三方应用可以使用自己的回调页。 * * <p> * 注:关于授权回调页对移动客户端应用来说对用户是不可见的,所以定义为何种形式都将不影响, * 但是没有定义将无法使用 SDK 认证登录。 * 建议使用默认回调页:https://api.weibo.com/oauth2/default.html * </p> */ public static final String REDIRECT_URL = "https://api.weibo.com/oauth2/default.html"; //默认URL /** * Scope 是 OAuth2.0 授权机制中 authorize 接口的一个参数。通过 Scope,平台将开放更多的微博 * 核心功能给开发者,同时也加强用户隐私保护,提升了用户体验,用户在新 OAuth2.0 授权页中有权利 * 选择赋予应用的功能。 * * 我们通过新浪微博开放平台-->管理中心-->我的应用-->接口管理处,能看到我们目前已有哪些接口的 * 使用权限,高级权限需要进行申请。 * * 目前 Scope 支持传入多个 Scope 权限,用逗号分隔。 * * 有关哪些 OpenAPI 需要权限申请,请查看:http://open.weibo.com/wiki/%E5%BE%AE%E5%8D%9AAPI * 关于 Scope 概念及注意事项,请查看:http://open.weibo.com/wiki/Scope */ 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 static final String SCOPE = null; }
MyApplication.class
import android.app.Application; import com.sina.weibo.sdk.WbSdk; import com.sina.weibo.sdk.auth.AuthInfo; public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); initWebSDK(); } //新浪微博初始化,对应的参数分别是app_key,回调地址,和权限 private void initWebSDK() { WbSdk.install(this, new AuthInfo(this, Constants.APP_KEY, Constants.REDIRECT_URL, Constants.SCOPE)); } }
MainActivity.class:
定义:
private SsoHandler mSsoHandler; private Oauth2AccessToken mAccessToken;
oncreate中初始化:
mSsoHandler = new SsoHandler(MainActivity.this);
按钮事件中调用:
mSsoHandler.authorizeClientSso(new SelfWbAuthListener());
SelfWbAuthListener 方法:
private class SelfWbAuthListener implements com.sina.weibo.sdk.auth.WbAuthListener { @Override public void onSuccess(final Oauth2AccessToken token) { MainActivity.this.runOnUiThread(new Runnable() { @Override public void run() { mAccessToken = token; if (mAccessToken.isSessionValid()) { // 保存 Token 到 SharedPreferences AccessTokenKeeper.writeAccessToken(MainActivity.this, mAccessToken); Toast.makeText(MainActivity.this, "授权成功", Toast.LENGTH_SHORT).show(); startActivity(new Intent(MainActivity.this, SecondActivity.class)); } } }); } @Override public void cancel() { Toast.makeText(MainActivity.this, "取消授权", Toast.LENGTH_LONG).show(); } @Override public void onFailure(WbConnectErrorMessage errorMessage) { Toast.makeText(MainActivity.this, errorMessage.getErrorMessage(), Toast.LENGTH_LONG).show(); } }
onActivityResult :
if (requestCode == 32973){ //验证微博登录是requestCode是32973,便于跟别的回调分开处理 if (mSsoHandler != null) { mSsoHandler.authorizeCallBack(requestCode, resultCode, data); } }
三. 新浪微博控制应用设置
这里需要跟应用的包名一致,并通过工具分成对应的签名文件,这里错误,无法实现登录。
The end !