微信获取登录数据成功回调,登录模块优化

This commit is contained in:
kehaoyuan
2017-07-10 16:22:13 +08:00
parent b239407c25
commit ba3e882f47
5 changed files with 95 additions and 61 deletions

View File

@ -4,8 +4,8 @@ import android.app.Activity;
import android.content.Context;
import android.widget.Toast;
import com.gh.base.AppController;
import com.gh.common.constant.Config;
import com.lightgame.utils.RuntimeUtils;
import com.lightgame.utils.Utils;
import com.sina.weibo.sdk.WbSdk;
import com.sina.weibo.sdk.auth.AuthInfo;
@ -13,8 +13,6 @@ import com.sina.weibo.sdk.auth.Oauth2AccessToken;
import com.sina.weibo.sdk.auth.WbAuthListener;
import com.sina.weibo.sdk.auth.WbConnectErrorMessage;
import com.sina.weibo.sdk.auth.sso.SsoHandler;
import com.tencent.connect.UserInfo;
import com.tencent.connect.auth.QQToken;
import com.tencent.mm.sdk.openapi.IWXAPI;
import com.tencent.mm.sdk.openapi.SendAuth;
import com.tencent.mm.sdk.openapi.WXAPIFactory;
@ -30,12 +28,10 @@ import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Map;
/**
* Created by khy on 14/06/17.
*
* <p>
* 获取第三方登录数据
*/
@ -57,14 +53,13 @@ public class GetLoginDataUtils {
+ "follow_app_official_microblog," + "invitation_write"; // weiboCode
private GetLoginDataUtils(Context context) {
mTencent = Tencent.createInstance(Config.TENCENT_APPID, context); //初始化QQ分享
mContext = context.getApplicationContext();
mTencent = Tencent.createInstance(Config.TENCENT_APPID, mContext); //初始化QQ分享
mIWXAPI = WXAPIFactory.createWXAPI(context, Config.WECHAT_APPID, true); //初始化微信分享
mIWXAPI = WXAPIFactory.createWXAPI(mContext, Config.WECHAT_APPID, true); //初始化微信分享
WbSdk.install(context, new AuthInfo(context, Config.WEIBO_APPKEY, "http://www.sina.com", SCOPE));
mSsoHandler = new SsoHandler((Activity) context);
WbSdk.install(context, new AuthInfo(mContext, Config.WEIBO_APPKEY, "http://www.sina.com", SCOPE));
mContext = context;
Utils.log(GetLoginDataUtils.class.getSimpleName(), "initLogin");
}
@ -88,33 +83,41 @@ public class GetLoginDataUtils {
try {
mTencent.setOpenId(jsonObject.getString("openid"));
mTencent.setAccessToken(jsonObject.getString("access_token"), jsonObject.getString("expires_in"));
JSONObject content = new JSONObject();
content.put("openid", jsonObject.getString("openid"));
content.put("access_token_expire", Utils.getTime(mContext) + jsonObject.getLong("expires_in"));
content.put("access_token", jsonObject.getString("access_token"));
if (mLoginListener != null) {
mLoginListener.OnLoginData(jsonObject, LoginUtils.LoginTag.qq);// QQ 登录回调
}
} catch (JSONException e) {
Utils.log(GetLoginDataUtils.class.getSimpleName(), "QQ登录数据回调异常" + e.toString());
e.printStackTrace();
}
// TODO 数据不对
mLoginListener.OnLoginData(jsonObject, LoginUtils.LoginTag.qq);// QQ 登录回调
}
QQToken qqToken = mTencent.getQQToken();
UserInfo userInfo = new UserInfo(mContext, qqToken);
userInfo.getUserInfo(new IUiListener() { // 获取QQ用户信息
@Override
public void onComplete(Object o) {
Utils.log(GetLoginDataUtils.class.getSimpleName(), "QQUserInfo::" + o.toString());
}
// QQToken qqToken = mTencent.getQQToken();
// UserInfo userInfo = new UserInfo(mContext, qqToken);
// userInfo.getUserInfo(new IUiListener() { // 获取QQ用户信息
// @Override
// public void onComplete(Object o) {
// Utils.log(GetLoginDataUtils.class.getSimpleName(), "QQUserInfo::" + o.toString());
// }
//
// @Override
// public void onError(UiError uiError) {
// Utils.log(GetLoginDataUtils.class.getSimpleName(), "QQUserInfoUiError::" + uiError.errorDetail + "==" + uiError.errorMessage + "==" + uiError.errorCode);
// }
//
// @Override
// public void onCancel() {
// Utils.log(GetLoginDataUtils.class.getSimpleName(), "QQUserInfoonCancel");
// }
// });
@Override
public void onError(UiError uiError) {
Utils.log(GetLoginDataUtils.class.getSimpleName(), "QQUserInfoUiError::" + uiError.errorDetail + "==" + uiError.errorMessage + "==" + uiError.errorCode);
}
@Override
public void onCancel() {
Utils.log(GetLoginDataUtils.class.getSimpleName(), "QQUserInfoonCancel");
}
});
}
@Override
@ -132,11 +135,11 @@ public class GetLoginDataUtils {
// QQ登录
public void QQLogin(OnLoginDataListener listener) {
public void QQLogin(OnLoginDataListener listener, Activity activity) {
mLoginListener = listener;
if (mTencent != null && !mTencent.isSessionValid()) {
Utils.log(GetLoginDataUtils.class.getSimpleName(), "QQLogin");
mTencent.login((Activity) mContext, "all", QqLoginListener);
mTencent.login(activity, "all", QqLoginListener);
}
}
@ -155,50 +158,61 @@ public class GetLoginDataUtils {
}
}
public void WCLofinCallBack(JSONObject content) {
mLoginListener.OnLoginData(content, LoginUtils.LoginTag.wechat);
}
// 微博登录
public void WeiBoLogin(OnLoginDataListener listener) {
public void WeiBoLogin(OnLoginDataListener listener, Activity context) {
mSsoHandler = new SsoHandler(context);
mLoginListener = listener;
mSsoHandler.authorizeClientSso(new SelfWbAuthListener());
// 第一次启动本应用AccessToken 不可用
mAccessToken = AccessTokenKeeper.readAccessToken(mContext);
if (mAccessToken.isSessionValid()) {
updateTokenView(true);
}
// if (mAccessToken.isSessionValid()) {
// updateTokenView(true);
// }
}
// 微博登录回调处理
private class SelfWbAuthListener implements WbAuthListener {
@Override
public void onSuccess(final Oauth2AccessToken token) {
((Activity) mContext).runOnUiThread(new Runnable() {
RuntimeUtils.getInstance().runOnUiThread(new Runnable() {
@Override
public void run() {
mAccessToken = token;
if (mAccessToken.isSessionValid()) {
// 显示 Token
updateTokenView(false);
// updateTokenView(false);
// 保存 Token 到 SharedPreferences
AccessTokenKeeper.writeAccessToken(mContext, mAccessToken);
Toast.makeText(mContext, "授权成功", Toast.LENGTH_SHORT).show();
}
}
});
Map<String, String> map = new HashMap<>();
map.put("uid", token.getUid());
map.put("access_token", token.getToken());
map.put("access_token_expire", String.valueOf(token.getExpiresTime()));
map.put("refresh_token", token.getRefreshToken());
map.put("refresh_token_expire", ""); // TODO 数据不对
mLoginListener.OnLoginData(new JSONObject(map), LoginUtils.LoginTag.qq);// QQ 登录回调
AppController.MAIN_EXECUTOR.execute(new Runnable() {
@Override
public void run() {
getWeiBoUserInfo(token.getToken(), token.getUid());
JSONObject content = new JSONObject();
try {
content.put("uid", token.getUid());
content.put("access_token", token.getToken());
content.put("access_token_expire", Utils.getTime(mContext) + token.getExpiresTime());
content.put("refresh_token", token.getRefreshToken());
// content.put("refresh_token_expire", ""); // TODO refresh_token 好像没有有效期
if (mLoginListener != null) {
mLoginListener.OnLoginData(content, LoginUtils.LoginTag.qq);// QQ 登录回调
}
});
} catch (JSONException e) {
e.printStackTrace();
}
// AppController.MAIN_EXECUTOR.execute(new Runnable() {
// @Override
// public void run() {
// getWeiBoUserInfo(token.getToken(), token.getUid());
// }
// });
}
@Override