Android第三方授權(新浪微博篇)

來源:互聯網
上載者:User

標籤:

Android第三方認證新浪微博,相對,也比較簡單,並且sina給了一個sdk和sdkdemo,這個demo封裝了許多,但是自己不準備記錄這個demo,而是直接使用sdk

同樣去sina官方下載sdk,自己去搜吧,地址不給了

1.初始化SsoHandler

1 AuthInfo mWeiboAuthInfo = new AuthInfo(this, Constants.APP_KEY, Constants.REDIRECT_URL, Constants.SCOPE);2 SsoHandler mSsoHandler = new SsoHandler(this, mWeiboAuthInfo);

其中幾個常量的解釋可以到官網查看

2.開始授權

 1 mSsoHandler.authorize(new MyWeiboAuthListener(new LoginWeiboGetUserInfoListener()));     2 private static class MyWeiboAuthListener implements WeiboAuthListener { 3  4         private RequestListener mRequestUserInfoListener = null; 5          6         public MyWeiboAuthListener(RequestListener requestUserInfoListener){ 7             this.mRequestUserInfoListener = requestUserInfoListener; 8         } 9         10         @Override11         public void onCancel() {12             // TODO Auto-generated method stub13             Toast.makeText(mContext, "已取消微博登入", Toast.LENGTH_SHORT).show();14         }15 16         @Override17         public void onComplete(Bundle values) {18             // TODO Auto-generated method stub19             mAccessToken = Oauth2AccessToken.parseAccessToken(values);20             if (mAccessToken.isSessionValid()) {21                 // 儲存 Token 到 SharedPreferences22                 WeiboParameters weiboParameters = new WeiboParameters(23                         Constants.APP_KEY);24                 weiboParameters.put("access_token", mAccessToken.getToken());25 26                 if( mWeiboRunner == null ){27                     mWeiboRunner = new AsyncWeiboRunner(28                         mContext);29                 }30                 31                 if( mRequestUserInfoListener == null ){32                     return;33                 }34                 mWeiboRunner.requestAsync(WEIBO_USERID_URL,35                         weiboParameters, "POST",36                         mRequestUserInfoListener);37 38             } else {39                 // 當您註冊的應用程式簽名不正確時,就會收到 Code,請確保簽名正確40                 String code = values.getString("code", "");41                 Log.i(TAG, "應用簽名不正確 code = " + code);42                 Toast.makeText(mContext, "微博認證失敗", Toast.LENGTH_SHORT).show();43 44             }45         }46 47         @Override48         public void onWeiboException(WeiboException arg0) {49             // TODO Auto-generated method stub50 51         }52 53     }54 55 56 /**57      * 擷取使用者資訊58      * @author ReCwert59      *60      */61     private static class LoginWeiboGetUserInfoListener implements RequestListener {62     63         @Override64         public void onComplete(String result) {65             // TODO Auto-generated method stub66             JSONObject userObject = JSON.parseObject(result);67             String weiboUid = userObject.getString("uid");68             if( TextUtils.isEmpty(weiboUid)){69                 Log.e(TAG, "weibo uid = null ");70                 return;71             }72             73             Log.i(TAG, "weibo uid = " + weiboUid );74             uid = weiboUid;75             WeiboParameters weiboParameters = new WeiboParameters(Constants.APP_KEY);76             weiboParameters.put("uid", weiboUid);77             weiboParameters.put("access_token", mAccessToken.getToken());78             if( mWeiboRunner == null ){79                 mWeiboRunner = new AsyncWeiboRunner(80                     mContext);81             }82             83             mWeiboRunner.requestAsync(WEIBO_USERINFO_URL, weiboParameters, "GET", new MyWeiboHandleUserInfoListener());84         }85 86         @Override87         public void onWeiboException(WeiboException exception) {88             // TODO Auto-generated method stub89             exception.printStackTrace();90             91         }92 93     }

 1 /** 2      * 處理擷取的使用者資訊 3      * @author ReCwert 4      * 5      */ 6     private static class MyWeiboHandleUserInfoListener implements RequestListener{ 7  8         @Override 9         public void onComplete(String result) {10             // TODO Auto-generated method stub11             JSONObject userData = JSON.parseObject(result);12             nickName = userData.getString("name");13             headUrl = userData.getString("profile_image_url");14             sex = userData.getString("gender");15             Log.i(TAG, "uid = " + uid );16             Log.i(TAG, "nickName = " + nickName);17             Log.i(TAG, "headUrl = " + headUrl );18             Log.i(TAG, "sex = " + sex);19         }20 21         @Override22         public void onWeiboException(WeiboException exception) {23             // TODO Auto-generated method stub24             exception.printStackTrace();25         }26         27     }

 

可以看到,我們在第一個回調中只是獲得了access_token,我們需要根據這個access_token去擷取跟多的資訊,比如去請求userid 和userinfo

1 private static final String WEIBO_USERID_URL = "https://api.weibo.com/oauth2/get_token_info";2 private static final String WEIBO_USERINFO_URL = "https://api.weibo.com/2/users/show.json";

當然,更多的資訊擷取的url在sina官方能夠查看到
http://open.weibo.com/wiki/%E5%BE%AE%E5%8D%9AAPI#OAuth2

 

Android第三方授權(新浪微博篇)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.