android 新浪微博登录获取access_token值的问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/coderinchina/article/details/46318493

今天测试那边小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中的值 就知道键该写啥了!在此记录下
展开阅读全文
博主设置当前文章不允许评论。

没有更多推荐了,返回首页