第三方登錄
作者:豐茂連
因?yàn)樯婕暗娇蛻舻膫€人信息安全,所以需要大家根據(jù)這篇博客(http://blog.csdn.net/csdnfml/article/details/49446479)進(jìn)行簡單修改
源碼簡介:因?yàn)樯婕暗娇蛻舻膫€人信息安全,所以需要大家根據(jù)這篇博客(http://blog.csdn.net/csdnfml/article/details/49446479)進(jìn)行簡單修改
源碼效果:
源碼片段:
- /** ------------------------QQ第三方登錄-------------------- */
- public void loginQQ(){
- /** 判斷是否登陸過 */
- if (!mTencent.isSessionValid()){
- mTencent.login(this, "all",loginListener);
- }/** 登陸過注銷之后在登錄 */
- else {
- mTencent.logout(this);
- mTencent.login(this, "all",loginListener);
- }
- }
- IUiListener loginListener = new BaseUiListener() {
- @Override
- protected void doComplete(JSONObject values) {
- initOpenidAndToken(values);
- updateUserInfo();
- }
- };
- /** QQ登錄第二步:存儲token和openid */
- public static void initOpenidAndToken(JSONObject jsonObject) {
- try {
- String token = jsonObject.getString(Constants.PARAM_ACCESS_TOKEN);
- String expires = jsonObject.getString(Constants.PARAM_EXPIRES_IN);
- String openId = jsonObject.getString(Constants.PARAM_OPEN_ID);
- if (!TextUtils.isEmpty(token) && !TextUtils.isEmpty(expires) && !TextUtils.isEmpty(openId)) {
- mTencent.setAccessToken(token, expires);
- mTencent.setOpenId(openId);
- }
- } catch(Exception e) {
- }
- }
- /** QQ登錄第三步:獲取用戶信息 */
- private void updateUserInfo() {
- if (mTencent != null && mTencent.isSessionValid()) {
- IUiListener listener = new IUiListener() {
- @Override
- public void onError(UiError e) {
- Message msg = new Message();
- msg.obj = "把手機(jī)時間改成獲取網(wǎng)絡(luò)時間";
- msg.what = 1;
- mHandler.sendMessage(msg);
- }
- @Override
- public void onComplete(final Object response) {
- Message msg = new Message();
- msg.obj = response;
- msg.what = 0;
- mHandler.sendMessage(msg);
- }
- @Override
- public void onCancel() {
- Message msg = new Message();
- msg.obj = "獲取用戶信息失敗";
- msg.what = 2;
- mHandler.sendMessage(msg);
- }
- };
- mInfo = new UserInfo(this, mTencent.getQQToken());
- mInfo.getUserInfo(listener);
- } else {
- }
- }
- Handler mHandler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- if (msg.what == 0) {
- JSONObject response = (JSONObject) msg.obj;
- if (response.has("nickname")) {
- try {
- log("獲取用戶信息成功,返回結(jié)果:"+response.toString());
- mThirdLoginResult.setText("登錄成功\n"+"昵稱:"+response.getString("nickname")+"\n頭像地址:"+response.get("figureurl_qq_1"));
- } catch (JSONException e) {
- e.printStackTrace();
- }
- }
- }else if(msg.what == 1){
- mThirdLoginResult.setText(msg+"");
- }else if(msg.what == 2){
- mThirdLoginResult.setText(msg+"");
- }
- }
- };
- /** QQ登錄***步:獲取token和openid */
- private class BaseUiListener implements IUiListener {
- @Override
- public void onComplete(Object response) {
- if (null == response) {
- mToast("登錄失敗");
- return;
- }
- JSONObject jsonResponse = (JSONObject) response;
- if (null != jsonResponse && jsonResponse.length() == 0) {
- mToast("登錄失敗");
- return;
- }
- log("QQ登錄成功返回結(jié)果-" + response.toString());
- doComplete((JSONObject)response);
- }
- protected void doComplete(JSONObject response) {}
- @Override
- public void onError(UiError e) {
- Util.toastMessage(MainActivity.this, "onError: " + e.errorDetail);
- Util.dismissDialog();
- }
- @Override
- public void onCancel() {
- Util.toastMessage(MainActivity.this, "onCancel: ");
- Util.dismissDialog();
- if (isServerSideLogin) {
- isServerSideLogin = false;
- }
- }
- }
- /** -------------------------QQ第三方登錄結(jié)束-------------------- */
責(zé)任編輯:倪明
來源:
devstore