微博开发文档参考 http://open.weibo.com/wiki/Android_SDK%E8%AF%B4%E6%98%8E%E6%96%87%E6%A1%A3
APP添加微博登录需要如下步骤:
1.申请APP ID
2.下载相关SDK,路径为http://open.weibo.com/wiki/index.php/SDK#Android_SDK
3.代码添加,将DEMO中AccessTokenKeeper / AbsOpenAPI / UsersAPI / Constants 拷到代码中
4.点击微博登录添加代码
mAuthInfo = new AuthInfo(this, Constants.APP_KEY, Constants.REDIRECT_URL, Constants.SCOPE);
mSsoHandler = new SsoHandler(LoginActivity.this, mAuthInfo);
mSsoHandler.authorize(new AuthListener());
/*
weibo login
*/
private AuthInfo mAuthInfo;
/**
* 封装了 "access_token","expires_in","refresh_token",并提供了他们的管理功能
*/
private Oauth2AccessToken mAccessToken;
/**
* 注意:SsoHandler 仅当 SDK 支持 SSO 时有效
*/
private SsoHandler mSsoHandler;
/**
* 当 SSO 授权 Activity 退出时,该函数被调用。
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// SSO 授权回调
// 重要:发起 SSO 登陆的 Activity 必须重写 onActivityResults
if (mSsoHandler != null) {
mSsoHandler.authorizeCallBack(requestCode, resultCode, data);
}
}
/**
* 微博认证授权回调类。
* 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 到 SharedPreferences
AccessTokenKeeper.writeAccessToken(LoginActivity.this, mAccessToken);
***这里即是微博第三方登录成功
*** 下面这里即是获取微博个人信息
UsersAPI userAPI = new UsersAPI(LoginActivity.this, Constants.APP_KEY, mAccessToken);
userAPI.show(Long.valueOf(mAccessToken.getUid()), new SinaRequestListener());
} else {
// 以下几种情况,您会收到 Code:
// 1. 当您未在平台上注册的应用程序的包名与签名时;
// 2. 当您注册的应用程序包名与签名不正确时;
// 3. 当您在平台上注册的包名和签名与您当前测试的应用的包名和签名不匹配时。
String code = values.getString("code");
String message = getString(R.string.weibosdk_demo_toast_auth_failed);
if (!TextUtils.isEmpty(code)) {
message = message + "\nObtained the code: " + code;
}
}
}
@Override
public void onCancel() {
}
@Override
public void onWeiboException(WeiboException e) {
}
}
public class SinaRequestListener implements RequestListener { //新浪微博请求接口
@Override
public void onComplete(String response) {
** 这里即为获取个人信息了
}
@Override
public void onWeiboException(WeiboException e) {
Toast.makeText(LoginActivity.this, "Auth exception : " + e.getMessage(), Toast.LENGTH_LONG).show();
}
}