Android开发第三方登录 - - 微博登录
2017-09-26 本文已影响148人
范庆文
由于公司要APP要集成第三方登录的需求 ,所以整理了下微博快速授权
新浪微博的SDK竟然更新了,而且现在文档写的还是不友好 找文档字段很麻烦 相当无奈.
新浪微博SDK放在了GitHub上,地址:
https://github.com/sinaweibosdk/weibo_android_sdk
首先集成SDK:
在自己项目的build.gradle中添加:
allprojects {
repositories {
jcenter()
mavenCentral()
maven { url "https://dl.bintray.com/thelasterstar/maven/" }
}
}
Paste_Image.png
然后build.gradle中的dependencies添加:
compile 'com.sina.weibo.sdk:core:2.0.3:openDefaultRelease@aar'
在自己的Application类或者Main中初始化weiboSDK都可以
//新浪微博初始化,对应的参数分别是app_key,回调地址,和权限
private void initWebSDK() {
WbSdk.install(this,new AuthInfo(this, Config.APP_KEY_SINA, Config.REDIRECT_URL,
Config.SCOPE));
}
▽这个两个地方要使用自己开放平台上的参数
Paste_Image.png
/**
* description :登录页面
* @version 1.0
*/
public class LoginActivity extends BaseActivity implements ILoginView.View {
...
.....
/**
* 新浪微博
*/
private SsoHandler mSsoHandler;
/** 封装了 "access_token","expires_in","refresh_token",并提供了他们的管理功能 */
private Oauth2AccessToken mAccessToken;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
ButterKnife.bind(this);
......
...........
//新浪微博
mSsoHandler = new SsoHandler(LoginActivity.this);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
...
....
//sina login
if(mSsoHandler!=null){
mSsoHandler.authorizeCallBack(requestCode,resultCode,data);
}
}
@OnClick({R.id.login_tv_register, R.id.login_btn_go, R.id.login_tv_forget_password,R.id.iv_other_login_qq,R.id.iv_other_login_sina,R.id.iv_other_login_wx})
public void onViewClicked(View view) {
switch (view.getId()) {
..........
...........
case R.id.iv_other_login_sina:
loginToSina();
break;
...
.......
}
}
//吊起新浪微博客户端授权,如果未安装这使用web授权
private void loginToSina() {
//授权方式有三种,第一种对客户端授权 第二种对Web短授权,第三种结合前两中方式
mSsoHandler.authorize(new SelfWbAuthListener());
}
private class SelfWbAuthListener implements com.sina.weibo.sdk.auth.WbAuthListener{
@Override
public void onSuccess(final Oauth2AccessToken token) {
runOnUiThread(new Runnable() {
@Override
public void run() {
mAccessToken = token;
if (mAccessToken.isSessionValid()) {
// 显示 Token
// updateTokenView(false);
// 保存 Token 到 SharedPreferences
// AccessTokenKeeper.writeAccessToken(LoginActivity.this, mAccessToken);
showMsg(1,"授权成功");
//获取个人资料
//https://api.weibo.com/2/users/show.json
OkHttpUtils.get()
.url("https://api.weibo.com/2/users/show.json")
.addParams("access_token",mAccessToken.getToken())
.addParams("uid",mAccessToken.getUid())
.build()
.execute(new StringCallback() {
@Override
public void onError(Call call, Exception e, int id) {
ViseLog.d("获取失败:"+e.getMessage());
e.printStackTrace();
}
@Override
public void onResponse(String response, int id) {
ViseLog.d("response:"+response);
}
});
}
}
});
}
@Override
public void cancel() {
showMsg(1,"取消授权");
}
@Override
public void onFailure(WbConnectErrorMessage errorMessage) {
Toast.makeText(LoginActivity.this, errorMessage.getErrorMessage(), Toast.LENGTH_LONG).show();
}
}
......
.....
......
}
注意这里用自己的网络框架就好了 参数什么保持正确就行
Paste_Image.png下面就是授权成功后 成功获取了用户信息了
Paste_Image.png然后在按照需求绑定微博等更多操作了
大家有什么不懂得可以下面留言 我看到会回复 互相学习 如有错误请指出 谢谢啦