您的位置:首页 > 移动开发 > Android开发

新浪微博第三方登录验证及遇到问题 Android端

2017-01-10 00:55 603 查看

第三方登录 :新浪微博

首先:

新浪微博github:https://github.com/sinaweibosdk/weibo_android_sdk

新浪开发者平台:http://open.weibo.com/

1.注册账号:http://open.weibo.com/

android包名 签名都 要填一个的 获取签名软件的地址 新浪已经给了(https://github.com/mobileresearch/weibo_android_sdk/blob/master/app_signatures.apk)注意 :把这个软件安装到手机上,然后输入包名 就能获取到签名,但是你的软件要安装到手机上(要获取签名的软件)

2. 高级信息里 -OAuth2.0 授权设置 :这个设置要和 Constants 里的REDIRECT_URL 一致 不然出问题。

3. 下载个demo 把里面的libs包的文件夹及SO文件拷贝,导入weibosdkcore.jar。

4. 清单文件注册权限。

5. 清单文件注册activity和service

<activity android:name="com.sina.weibo.sdk.component.WeiboSdkBrowser"
android:configChanges="keyboardHidden|orientation"
android:windowSoftInputMode="adjustResize"
android:exported="false" >
</activity>
<service android:name="com.sina.weibo.sdk.net.DownloadService"
android:exported="false">
</service>


这里的 DownloadService 报红,不用管。(登录用不到可以不写)

6.微博登录有三种方式:1,SSO 授权 2,Web 授权 3,SSO 授权+Web 授权 混合授权 github有介绍,一般都是用混合的。

soo授权: 调用这个

mSsoHandler.authorizeWeb(new AuthListener());


web授权:

mSsoHandler. authorizeClientSso(new AuthListener());


混合的:

mSsoHandler. authorize(new AuthListener());


7 把 Constants 这个从demo里扣出来 里面的参数替换成自己的。AccessTokenKeeper 这个也扣出来,放自己代码里。

8. 代码:

mAuthInfo = new AuthInfo(this, Constants.APP_KEY, Constants.REDIRECT_URL, Constants.SCOPE);
mSsoHandler = new SsoHandler(WBAuthActivity.this, mAuthInfo);
findViewById(R.id.obtain_token_via_signature).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mSsoHandler.authorize(new AuthListener());
}
});
public 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(WBAuthActivity.this, mAccessToken);

} 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;
}
Toast.makeText(WBAuthActivity.this, message, Toast.LENGTH_LONG).show();
}
}

@Override
public void onCancel() {

}

@Override
public void onWeiboException(WeiboException e) {

}
}


代码很少 ,都是demo里WBAuthActivity 这个类里的代码,注释很清晰。这样就可以基本集成sina登录了。

容易出现的问题有两个:

1,出现 21322 错误 这是因为上面的第二步,不一致导致的,填写一致就可以解决。

2,“Caused by: java.lang.UnsatisfiedLinkError: Couldn’t load weibosdkcore: findLibrary returned null ” 解决方法 src/main下面建立文件夹 jniLibs 然后把libs下面包含so文件的文件夹复制过来 ,clean一下。这个问题也使用其他的,之前做百度地图也有类似的错误。解决方法相同。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 新浪微博