首先到新浪开放平台下载SDK
申请 APP KEY
1、把 weiboSDKCore_3.1.4.jar 导入工程,一开始咋是按照官方文档一步步来的,但是。。使用官方提供的登录按钮的时候报错了,估计是要自己设置按钮的图片吧。出于懒的。。我直接把这个JAR包删掉,直接使用下载好的SDK提供的 Library ,即 WeiboSDK 。
在 AndroidManifest.xml 中添加相应的权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 微博页面授权 -->
<activity
android:name="com.sina.weibo.sdk.component.WeiboSdkBrowser"
android:configChanges="keyboardHidden|orientation"
android:windowSoftInputMode="adjustResize"
android:exported="false" >
</activity>
<meta-data
android:name="WEIBO_APPKEY"
android:value="自己申请的appkey" />
<meta-data
android:name="WEIBO_CHANNEL"
android:value="weibo" />
2、然后在自己的界面中添加微博按钮:
<com.sina.weibo.sdk.widget.LoginButton
android:id="@+id/login_button_style1"
android:layout_width="@dimen/magin_25dp"
android:layout_height="@dimen/magin_25dp"
android:scaleType="fitXY"
android:layout_marginLeft="@dimen/magin_5dp"
/>
官方默认的按钮有三种形式,也可自己修改 Library 中的图片文件。
3、先在 activity 中的 oncreat 初始化
AuthInfo mAuthInfo = new AuthInfo(this, SinaConstants.APP_KEY, SinaConstants.REDIRECT_URL, SinaConstants.SCOPE);
SinaConstants 类如下:
/**
* 该类定义了微博授权时所需要的参数。
* @author LG
*/
public class SinaConstants {
/** 当前 DEMO 应用的 APP_KEY,第三方应用应该使用自己的 APP_KEY 替换该 APP_KEY */
public static final String APP_KEY = "1003784332";
/**
* 当前 DEMO 应用的回调页,第三方应用可以使用自己的回调页。
*
* <p>
* 注:关于授权回调页对移动客户端应用来说对用户是不可见的,所以定义为何种形式都将不影响,
* 但是没有定义将无法使用 SDK 认证登录。
* 建议使用默认回调页:https://api.weibo.com/oauth2/default.html
* </p>
*/
public static final String REDIRECT_URL = "http://sns.whalecloud.com/sina2/callback";
/**
* 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";
}
![大笑](http://static.blog.csdn.net/xheditor/xheditor_emot/default/laugh.gif)
4、新浪按钮的初始化
login_button_style1 = (LoginButton)findViewById(R.id.login_button_style1);
login_button_style1.setWeiboAuthInfo(mAuthInfo, mLoginListener);
login_button_style1.setStyle(LoginButton.LOGIN_INCON_STYLE_3);
//点击事件
login_button_style1.setExternalOnClickListener(mButtonClickListener);
默认按钮有三种形式,分别为LOGIN_INCON_STYLE_1、LOGIN_INCON_STYLE_2、LOGIN_INCON_STYLE_3
登陆认证对应的listener
/**
* 登入按钮的监听器,接收授权结果。
*/
private class AuthListener implements WeiboAuthListener {
@Override
public void onComplete(Bundle values) {
accessToken = Oauth2AccessToken.parseAccessToken(values);
if (accessToken != null && accessToken.isSessionValid()) {
SinaAccessTokenKeeper.writeAccessToken(getApplicationContext(), accessToken);
//获取新浪用户API类
mUsersAPI = new UsersAPI(act,SinaConstants.APP_KEY,accessToken);
mUsersAPI.show(Long.parseLong(accessToken.getUid()),mListener);
}
}
@Override
public void onWeiboException(WeiboException e) {
Toast.makeText(act, e.getMessage(), Toast.LENGTH_SHORT).show();
}
@Override
public void onCancel() {
Toast.makeText(act,
R.string.weibosdk_demo_toast_auth_canceled, Toast.LENGTH_SHORT).show();
}
}
按钮的点击监听:
/**
* 请注意:为每个 Button 设置一个额外的 Listener 只是为了记录当前点击的
* 是哪一个 Button,用于在 {@link #onActivityResult} 函数中进行区分。
* 通常情况下,我们的应用不需要定义该 Listener。
*/
private View.OnClickListener mButtonClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
if (v instanceof Button) {
mCurrentClickedButton = (Button)v;
}
}
};
mListener即获取用户信息的监听:
/**
* 返回用户信息监听
*/
private RequestListener mListener = new RequestListener(){
@Override
public void onComplete(String s) {
//返回的数据
}
@Override
public void onWeiboException(WeiboException e) {
}
};
差不多就这样了,其实下载的SDK里面的demo也有挺详细的,但是提供的文档感觉有点乱。。。
![大笑](http://static.blog.csdn.net/xheditor/xheditor_emot/default/laugh.gif)