Android微博QQ登入授權功能執行個體

來源:互聯網
上載者:User

標籤:android   style   blog   http   io   ar   color   os   sp   

最近開始做公司的小項目,其中就有微博和QQ的使用者登入,在這裡記錄一下,另外QQ的文檔非常噁心,鄙視一個!

 

微博授權登入:

 

先去微博開放平台申請應用,Android應用的包名和簽名填好,然後下載匯入SDK。

(很多傻瓜教程上都有這些東西的註冊流程,不過要是這些你都弄不好就別做開發了,微博的基本上看SDK裡的文檔和樣本基本就沒問題了)

 

直接上代碼,其實很簡單:

 

// ///////////////////////////////////////////////////////////// 微博登入相關操作 zhangyue 20141201//// /////////////////////////////////////////////////////////private WeiboAuth weiboAuth;private Oauth2AccessToken weiboAccessToken;private SsoHandler ssoHandler;private UsersAPI usersAPI;/** * 登入按鈕事件,進入授權登入流程 *  * @param view */public void onWeiboLogin(View view) {weiboAuth = new WeiboAuth(this, Constants.APP_KEY, Constants.REDIRECT_URL, Constants.SCOPE);// sso安全登入ssoHandler = new SsoHandler(this, weiboAuth);ssoHandler.authorize(new AuthListener());}/** * 授權登入監聽 *  * @author zhang.yue * @date 2014年12月1日 */class AuthListener implements WeiboAuthListener {@Overridepublic void onCancel() {}@Overridepublic void onComplete(Bundle arg0) {// 擷取到uid,token等資訊weiboAccessToken = Oauth2AccessToken.parseAccessToken(arg0);if (weiboAccessToken.isSessionValid()) {// 登入成功,擷取使用者資訊usersAPI = new UsersAPI(weiboAccessToken);long uid = Long.parseLong(weiboAccessToken.getUid());usersAPI.show(uid, requestListener);} else {// 登入失敗System.out.println(arg0.get("code"));}}@Overridepublic void onWeiboException(WeiboException arg0) {}}/** * 監聽擷取使用者資訊 */RequestListener requestListener = new RequestListener() {@Overridepublic void onWeiboException(WeiboException arg0) {}@Overridepublic void onComplete(String arg0) {// 得到使用者資訊jsonSystem.out.println(arg0);}};

 

 

QQ授權登入:

 

同樣的去QQ互聯平台申請應用填資料,不過QQ的文檔很噁心,先看代碼,一會再說:

 

// ///////////////////////////////////////////////////////////// QQ登入相關操作 zhangyue 20141201//// /////////////////////////////////////////////////////////private Tencent tencent;/** * 登入按鈕事件,進入授權登入流程 *  * @param view */public void onQQLogin(View view) {tencent = Tencent.createInstance(Constants.QQ_APP_KEY, getApplicationContext());tencent.login(this, Constants.QQ_SCOPE, new BaseUiListener("login"));}/** * Ui類封裝介面監聽 * @author zhang.yue * @date 2014年12月1日 */class BaseUiListener implements IUiListener {private String scope;public BaseUiListener(String scope) {this.scope = scope;}@Overridepublic void onCancel() {}@Overridepublic void onError(UiError arg0) {System.err.println(arg0.errorCode);}@Overridepublic void onComplete(Object arg0) {if (this.scope == "login") {//授權登入成功,擷取到uid,tokenSystem.out.println(arg0);//擷取使用者資訊UserInfo userinfo = new UserInfo(LoginMainActivity.this, tencent.getQQToken());userinfo.getUserInfo(new BaseUiListener("get_user_info"));} else if (this.scope.equals("get_user_info")) {//獲得使用者資訊json格式System.out.println(arg0);}}}/** * 非封裝類介面監聽   tencent.request(同步) tencent.requestAsync(非同步) * @author zhang.yue * @date 2014年12月1日 *///class BaseApiListener implements IRequestListener {////@Override//public void onComplete(JSONObject arg0) {//System.out.println(arg0);//}////@Override//public void onConnectTimeoutException(ConnectTimeoutException arg0) {//}////@Override//public void onHttpStatusException(HttpStatusException arg0) {//}////@Override//public void onIOException(IOException arg0) {//}////@Override//public void onJSONException(JSONException arg0) {//}////@Override//public void onMalformedURLException(MalformedURLException arg0) {//}////@Override//public void onNetworkUnavailableException(NetworkUnavailableException arg0) {//}////@Override//public void onSocketTimeoutException(SocketTimeoutException arg0) {//}////@Override//public void onUnknowException(Exception arg0) {//}////}
在QQ的文檔中,擷取使用者資訊是這樣寫的:

 

/** * 擷取使用者資訊 */private void onClickUserInfo() {        mTencent.requestAsync(Constants.GRAPH_USER_INFO, null,                    Constants.HTTP_GET, new BaseApiListener("get_user_info", false), null);}

結果Constants.GRAPH_USER_INFO這個根本沒有,其實新的已經換成UserInfo類那種方式擷取了。還是得把樣本匯入進來看看才知道。


另外,ActivityResult也要重寫一下:

@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (ssoHandler != null) {ssoHandler.authorizeCallBack(requestCode, resultCode, data);}if (tencent != null) {tencent.onActivityResult(requestCode, resultCode, data);}}
這樣授權和使用者資訊就都拿到了,SDK版本微博是2.5,QQ是2.2。

------------------------------------------------

我的獨立部落格:壊小子 - http://www.zyblog.net/

本文連結:http://www.zyblog.net/post-177.html

健身潮-IT人健身指南:http://www.jianshenchao.com

歡迎轉載,轉載請註明本文來源。


 

Android微博QQ登入授權功能執行個體

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.