android 腾讯微博的auth认证中问题
腾讯微博需要的包
1:AndroidSDK
2:AndroidSDKComponent
3:出现的问题时当auth 认证的时候;onAuthPassed不执行问题;
4:因为在客户端没有安装腾讯微博客户端的时候会进入Authorize(腾讯微博sdk 的Activity);
5:authorize中有在其webview 处理完认证的时候没有进行回调;
6:处理方法是Authorize加回调;按照代码2和代码3修改即可
(代码1)
public void doAuth() {
if(islogin()){
authOnComplete(accessToken, "");
return;
}
final Context context = mContext.getApplicationContext();
AuthHelper.register(mContext, appid, app_secket, new OnAuthListener() {
@Override
public void onWeiBoNotInstalled() {
// Toast.makeText(mContext, "onWeiBoNotInstalled", 1000)
// .show();
AuthHelper.unregister(mContext);
Intent i = new Intent(mContext,Authorize.class);
mContext.startActivity(i);
}
@Override
public void onWeiboVersionMisMatch() {
// Toast.makeText(mContext, "onWeiboVersionMisMatch",
// 1000).show();
Intent i = new Intent(mContext,Authorize.class);
mContext.startActivity(i);
}
@Override
public void onAuthFail(int result, String err) {
Toast.makeText(mContext, "验证失败",1000).show();
}
@Override
public void onAuthPassed(String name, WeiboToken token) {
// Toast.makeText(mContext, "passed", 1000).show();
Util.saveSharePersistent(context, "ACCESS_TOKEN", token.accessToken);
Util.saveSharePersistent(context, "EXPIRES_IN", String.valueOf(token.expiresIn));
Util.saveSharePersistent(context, "OPEN_ID", token.openID);
// Util.saveSharePersistent(context, "OPEN_KEY", token.omasKey);
Util.saveSharePersistent(context, "REFRESH_TOKEN", "");
// Util.saveSharePersistent(context, "NAME", name);
// Util.saveSharePersistent(context, "NICK", name);
Util.saveSharePersistent(context, "CLIENT_ID", Util.getConfig().getProperty("APP_KEY"));
Util.saveSharePersistent(context, "AUTHORIZETIME",
String.valueOf(System.currentTimeMillis() / 1000l));
accessToken=token.accessToken;
authOnComplete(accessToken, "");
}
});
AuthHelper.auth(mContext, "");
}
代码2
Authorize类
public void jumpResultParser(String result) {
String resultParam = result.split("#")[1];
String params[] = resultParam.split("&");
String accessToken = params[0].split("=")[1];
String expiresIn = params[1].split("=")[1];
String openid = params[2].split("=")[1];
String openkey = params[3].split("=")[1];
String refreshToken = params[4].split("=")[1];
String state = params[5].split("=")[1];
String name = params[6].split("=")[1];
String nick = params[7].split("=")[1];
Context context = this.getApplicationContext();
if (accessToken != null && !"".equals(accessToken)) {
Util.saveSharePersistent(context, "ACCESS_TOKEN", accessToken);
Util.saveSharePersistent(context, "EXPIRES_IN", expiresIn);// accesstoken过期时间,以返回的时间的准,单位为秒,注意过期时提醒用户重新授权
Util.saveSharePersistent(context, "OPEN_ID", openid);
Util.saveSharePersistent(context, "OPEN_KEY", openkey);
Util.saveSharePersistent(context, "REFRESH_TOKEN", refreshToken);
Util.saveSharePersistent(context, "NAME", name);
Util.saveSharePersistent(context, "NICK", nick);
Util.saveSharePersistent(context, "CLIENT_ID", clientId);
Util.saveSharePersistent(context, "AUTHORIZETIME",
String.valueOf(System.currentTimeMillis() / 1000l));
WeiboToken token = new WeiboToken();
token.accessToken = accessToken;
token.expiresIn = Long.valueOf(expiresIn);
token.refreshToken = refreshToken;
token.openID = openid;
AuthHelper.listener.onAuthPassed(name, token);
this.finish();
isShow = true;
}
}
代码3
AuthHelper类
public static OnAuthListener listener;