今天测试那边小MM说 工程师这边新浪微博登录不上,我当时就想这个不是做好了么,自己测试登录下果然不行,后来发现微博授权是成功了但是要获取openid和access_token传递给后台,发现access_token值为null,马上就把友盟的demo运行debug了下 ,因为友盟这些值是存放在Bundle里,debug发现qq登录和微博登录返回的值不一样,如下代码就行
mController.doOauthVerify(LoginResultActivity.this, SHARE_MEDIA.SINA,new UMAuthListener() { @Override public void onError(SocializeException e, SHARE_MEDIA platform) { dissDialog(); } @Override public void onComplete(Bundle value, SHARE_MEDIA platform) { if (value != null && !TextUtils.isEmpty(value.getString("uid"))) { String openid = value.getString("uid"); String access_token = value.getString("access_key"); if(openid!=null&&!"".equals(openid)){ Map<String,String> params = new HashMap<String, String>(); params.put("platform", "2"); params.put("openId", openid); params.put("openKey", access_token); ProtocolManager.getInstance().request(ProtocolEnum.URL_ACCOUNT_LOGIN, params, new RequestListener() { @Override public void onRequestSucess(String response) { Constant.LOGIN_WEIBO_TAG = 1; if(!TextUtils.isEmpty(response)){ LoginInfo loginInfo = JsonHelper.json2Bean(response, LoginInfo.class); if(loginInfo!=null&&loginInfo.getRet()==0){ /** * 玩家id保存到内存中 */ Constant.ID = loginInfo.getId(); //保存玩家id到sd卡中 SaveUtils.getInstance().saveString("id", loginInfo.getId()); SaveUtils.getInstance().saveInt("login", 3); loginHX(loginInfo.getId()); }else if(loginInfo!=null&&loginInfo.getRet()==1){ ShowToast.show("登录失败"); dissDialog(); } } } @Override public void onRequestFiled(String errorMsg) { Log.e(TAG,"微博=="+errorMsg); mHandler.sendEmptyMessage(LOGIN_FAIL); } }); } } } @Override public void onCancel(SHARE_MEDIA platform) { dissDialog(); } @Override public void onStart(SHARE_MEDIA platform) { createDialog(); } });
最关键是这行代码String access_token = value.getString("access_key");,开始天真的以为这个键是access_token ,后来发现错了 找这种错误最快的就是把友盟的demo运行起来debug看Bundle中的值 就知道键该写啥了!在此记录下
时间: 2024-10-28 11:28:59