一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Android - Android集成新浪微博第三方登錄的方法

Android集成新浪微博第三方登錄的方法

2021-03-13 15:50Android開發網 Android

這篇文章主要介紹了Android集成新浪微博第三方登錄的方法,完整講述了Android集成新浪微博第三方登錄的詳細步驟與實現技巧,需要的朋友可以參考下

本文實例講述了Android集成新浪微博第三方登錄的方法。分享給大家供大家參考。具體實現方法如下:

1.下載微博的sdk ,導入微博的jar包兩個 android-support-v4.jar和weibosdkcore.jar兩個包

2.把新浪微博中的demo_src中SDK中的com,導入到項目中

3.用demo中的constants,主要是參數設置,將里面的參數改成自己的參數。

4.編寫代碼,主要步驟如下:

復制代碼 代碼如下:
// 初始化微博對象
mWeiboAuth = new WeiboAuth(this, Constants.APP_KEY, Constants.REDIRECT_URL, Constants.SCOPE);
// sinaAuthorWebView.loadUrl("https://open.weibo.cn/oauth2/authorize?scope=email&redirect_uri=http://www.sina.com&state=flashmemoAndroid&forcelogin=true&display=mobile&client_id=2529326755");
//獲取code
mWeiboAuth.authorize(new AuthListener(), WeiboAuth.OBTAIN_AUTH_CODE);
// 第二步:通過 Code 獲取 Token
fetchTokenAsync(mCode, WEIBO_DEMO_APP_SECRET);

 

5.主要的核心代碼如下:

復制代碼 代碼如下:

/**
* 微博認證授權回調類。
*/
class AuthListener implements WeiboAuthListener {

 


@Override
public void onComplete(Bundle values) {
if (null == values) {
// 獲取code失敗
return;
}
String code = values.getString("code");
if (TextUtils.isEmpty(code)) {
// 獲取code失敗 
return;
}
// 獲取code成功
mCode = code;
// 獲取code成功,第二步:通過 Code 獲取 Token
fetchTokenAsync(mCode, WEIBO_DEMO_APP_SECRET);
}

@Override
public void onCancel() {
Log.e("LoginActivity", "sinaAuth cancel");
//如果取消授權,那么可以調到登錄頁面等
}

@Override
public void onWeiboException(WeiboException e) {
Log.e("LoginActivity", "sinaAuth exception :" + e.getMessage());
}
}

/**
* 該 Handler 配合 {@link RequestListener} 對應的回調來更新 UI。
*/
private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {


switch (msg.what) {
case MSG_FETCH_TOKEN_SUCCESS:
// 顯示 Token
// String date = new
// SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(
// new java.util.Date(mAccessToken.getExpiresTime()));
// String format =
// getString(R.string.weibosdk_demo_token_to_string_format_1);


// 獲取tocken成功
break;


case MSG_FETCH_TOKEN_FAILED:
// Toast.makeText(WBAuthCodeActivity.this,
// R.string.weibosdk_demo_toast_obtain_token_failed,
// Toast.LENGTH_SHORT).show();
// 獲取tocken失敗
break;
default:
break;
}
};
};


/**
* 異步獲取 Token。
*
* @param authCode
*            授權 Code,該 Code 是一次性的,只能被獲取一次 Token
* @param appSecret
*            應用程序的 APP_SECRET,請務必妥善保管好自己的 APP_SECRET,
*            不要直接暴露在程序中,此處僅作為一個DEMO來演示。
*/
public void fetchTokenAsync(String authCode, String appSecret) {
/*
* LinkedHashMap<String, String> requestParams = new
* LinkedHashMap<String, String>();
* requestParams.put(WBConstants.AUTH_PARAMS_CLIENT_ID,
* Constants.APP_KEY);
* requestParams.put(WBConstants.AUTH_PARAMS_CLIENT_SECRET,
* appSecretConstantS.APP_SECRET);
* requestParams.put(WBConstants.AUTH_PARAMS_GRANT_TYPE,
* "authorization_code");
* requestParams.put(WBConstants.AUTH_PARAMS_CODE, authCode);
* requestParams.put(WBConstants.AUTH_PARAMS_REDIRECT_URL,
* Constants.REDIRECT_URL);
*/
WeiboParameters requestParams = new WeiboParameters();
requestParams.add(WBConstants.AUTH_PARAMS_CLIENT_ID, Constants.APP_KEY);
requestParams.add(WBConstants.AUTH_PARAMS_CLIENT_SECRET, appSecret);
requestParams.add(WBConstants.AUTH_PARAMS_GRANT_TYPE,
"authorization_code");
requestParams.add(WBConstants.AUTH_PARAMS_CODE, authCode);
requestParams.add(WBConstants.AUTH_PARAMS_REDIRECT_URL,
Constants.REDIRECT_URL);

/**
* 請注意: {@link RequestListener} 對應的回調是運行在后臺線程中的, 因此,需要使用 Handler 來配合更新
* UI。
*/
AsyncWeiboRunner.request(OAUTH2_ACCESS_TOKEN_URL, requestParams,
"POST", new RequestListener() {
@Override
public void onComplete(String response) {
LogUtil.d(TAG, "get token Response: " + response);

Oauth2AccessToken token = Oauth2AccessToken
.parseAccessToken(response);
if (token != null && token.isSessionValid()) {

LogUtil.d(TAG, "Success! " + token.toString());

mAccessToken = token;
// 獲取token成功,可以做出相應的處理

// 通知UI改變
mHandler.obtainMessage(MSG_FETCH_TOKEN_SUCCESS)
.sendToTarget();

@Override
public void onComplete4binary(
ByteArrayOutputStream responseOS) {
LogUtil.e(TAG, "onComplete4binary...");
mHandler.obtainMessage(MSG_FETCH_TOKEN_FAILED)
.sendToTarget();
}

@Override
public void onIOException(IOException e) {
LogUtil.e(TAG, "onIOException: " + e.getMessage());
mHandler.obtainMessage(MSG_FETCH_TOKEN_FAILED)
.sendToTarget();
}

@Override
public void onError(WeiboException e) {
LogUtil.e(TAG, "WeiboException: " + e.getMessage());
mHandler.obtainMessage(MSG_FETCH_TOKEN_FAILED)
.sendToTarget();
}
});
}


主要是改寫complete相應的方法即可。handler主要是通知界面做出改變
UI Handler的參數調用問題的參數

復制代碼 代碼如下:
/** 獲取 Token 成功或失敗的消息 */
private static final int MSG_FETCH_TOKEN_SUCCESS = 1;
private static final int MSG_FETCH_TOKEN_FAILED = 2;

 

希望本文所述對大家的Android程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲男人天堂a | 欧美亚洲天堂 | 青青青视频免费线看 视频 青青青青青国产免费手机看视频 | 女人用粗大自熨喷水在线视频 | 四虎海外影院 | coolgay男男gayxxx chinese壮直男gay老年人 chinese野外gay军人 | 九九99亚洲精品久久久久 | 色综合亚洲天天综合网站 | 女人用粗大自熨喷水在线视频 | 玩两个少妇女邻居 | 青青青久热国产精品视频 | 国产成人综合手机在线播放 | t66y地址一地址二地址三 | 三级aa久久| 日韩欧美中文字幕一区二区三区 | 亚洲国产区中文在线观看 | 欧美办公室silkstocking | 色热综合 | 热久久天天拍天天拍热久久2018 | 成年人视频免费在线观看 | 精品无人区一区二区三区 | 午夜欧美精品久久久久久久久 | 黄蓉h系列| 亚洲黄视频在线观看 | 久久精品动漫网一区二区 | 久久久乱码精品亚洲日韩 | 啊好爽视频 | 成年美女黄网色大观看全 | 国产成人精品999在线 | 操大姨子逼 | 日韩成本大片35分钟免费播放 | 亚洲成熟人网站 | 精品一区二区三区视频日产 | 成人久久18免费网站 | 久久久久久久久女黄9999 | 男人边吃奶边做好爽视频免费 | 欧美一区二区福利视频 | 动漫美女3d被爆漫画 | 欧美xbxbxbxb大片 | 日本亚洲欧洲高清有码在线播放 | 色橹|