❶ android第三方QQ登陸
Android實現第三方QQ登陸的開放流程為:
一. QQ登錄目前採用OAuth2.0標准協議來進行用戶身份驗證和獲取用戶授權。整個流程如下所述,這里比如一個應用A
可以使用QQ賬戶登陸。
1. 用戶訪問客戶端的應用,試圖操作用戶存放在服務提供方的資源。比如用戶用QQ賬戶登錄 應用 A程序,同時可以獲
得用戶昵稱頭像等保存在騰訊伺服器的用戶信息。
2. 輸入QQ賬號後,應用A後向服務提供方 (騰訊) (Request Token)。 請求一個臨時令牌
3. 服務提供方 (騰訊)(應用A)的身份後,授予一個臨時令牌。驗證客戶端
4. 客戶端(應用A)獲得臨時令牌後,將用戶引導至服務提供方(騰訊)的授權頁面請求用戶授權。在這個過程中將臨時令牌和客戶端的 回調連接發送給服務提供方(騰訊)。
5. 用戶在服務提供方(騰訊)的網頁上輸入用戶名和密碼,然後授權該客戶端(應用A)訪問所請求的資源。
6. 授權成功後,服務提供方(騰訊)引導用戶返回到客戶端(應用A)提供的回調頁面。
7. 客戶端(應用A)根據臨時令牌從服務提供方(騰訊)那裡獲取訪問令牌 (Access Token)。
8. 根據訪問令牌 (Access Token)獲得對應用戶身份的openid,
9. 然後客戶端(應用A)根據訪問令牌 (Access Token)與openid調用OpenAPI,來請求訪問或修改用戶授權的資源(比如昵稱用戶頭像等經過用戶授權的信息)。
10.拿到訪問令牌 (Access Token)之後,客戶端(應用A)可以保存起來,下次就不用再向服務提供方(騰訊)請求授權,直接就可以使用該賬戶授權的資源,相當於保存了用戶名和密碼,但是真正的用戶名和密客戶端(應用A)並不知道。
比如一個信息發布的網站,可以使用QQ賬號登錄,用戶通過安全頁面輸入QQ賬號信息後顯示登陸成功,同時詢問用戶
是否允許該網站使用用戶的一些信息,比如資料,相冊等,經過用戶確認後該網站可以拿到用戶授權的信息。同時拿到訪
問令牌 (Access Token),以後該網站就可以用這個訪問獲得該用戶的這些授權信息,而不需要再次輸入賬戶信息。一般該
網站也要提供刪除這個訪問令牌的入口。這樣就可以很方便的把用戶願意提供的信息拿到這個信息發布網站使用,而用戶
不需要再次登記錄入。
二.QQ 為Android移動設備開發提供QQ登陸的開發包,對上述的過程進行的封裝,對開發者來說可以方便的使用。要真正開發一個使用QQ賬戶登錄的App,就需要在騰訊社區開放平台注冊應用, 申請對應的 appid 和appkey ,這個開發App 時候要用到。
1. 可以在騰訊開放API站點下載最新的QQ登錄API庫文件和Demo。
2.下載後的Demo工程如下,導入了庫文件tencent_openapi.jar如下圖一所示。
Demo介紹了兩種登陸方式,手機瀏覽器和WebView,傳入不同的參數,進入不同的登錄方式,然後輸入賬戶信息後會
根據用戶選擇返回不同的結果。開發者可以參考這些對應的代碼即可完成授權登錄的功能開發。
❷ 安卓手機app怎麼實現qq第三方登錄介面
申請APPID
進入QQ互聯的官網
在管理中心中創建移動應用。
導入Jar包
將下載得到的Jar包導入工程,並在AndroidManifest.xml文件中進行注冊。
<activity
android:name="com.tencent.tauth.AuthActivity"
android:noHistory="true"
android:launchMode="singleTask" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="tencent100546930" />
</intent-filter>
</activity>
其中,<data android:scheme="tencent100546930" />中的數字需要替換成自己申請得到的APPID。
創建登錄介面
所有的SDK介面調用,都會傳入一個回調,用以接收SDK返回的調用結果。回調的主要介面有兩種:
(1)IUiListener:調用SDK已經封裝好的介面時,例如:登錄、快速支付登錄、應用分享、應用邀請等介面。
(2)IRequestListener:使用requestAsync、request等通用方法調用sdk未封裝的介面時,例如上傳圖片、查看相冊等。
在這里創建IUiListener介面實現相應的登錄授權操作:
private void onClickLogin() {
if (!mTencent.isSessionValid()) {
IUiListener listener = new IUiListener() {
/** 授權失敗的回調*/
@Override
public void onError(UiError arg0) {
// TODO Auto-generated method stub
Toast.makeText(LoginActivity.this, "授權失敗", 1000).show();
Message msg = new Message();
msg.arg1 = 2;
handler.sendMessage(msg);
}
/** 授權成功的回調*/
@Override
public void onComplete(JSONObject arg0) {
// TODO Auto-generated method stub
Toast.makeText(LoginActivity.this, "授權成功", 1000).show();
Message msg = new Message();
msg.what = 2;
msg.arg1 = 1;
msg.obj = arg0;
handler.sendMessage(msg);
}
/** 取消授權的回調*/
@Override
public void onCancel() {
// TODO Auto-generated method stub
Toast.makeText(LoginActivity.this, "取消授權", 1000).show();
Message msg = new Message();
msg.arg1 = 3;
handler.sendMessage(msg);
}
};
mTencent.login(this, SCOPE, listener);
} else {
mTencent.logout(this);
}
}
其中,mTencent為QQSDK主要實現類Tencent類的實例。
// Tencent類是SDK的主要實現類,開發者可通過Tencent類訪問騰訊開放的OpenAPI。
// 其中APP_ID是分配給第三方應用的appid,類型為String。
mTencent = Tencent.createInstance(APP_ID, this.getApplicationContext());
將handler進行實例化
handler = new Handler(this);
並將類實現Callback介面,即可對上述類進行Handler的處理操作。
@Override
public boolean handleMessage(Message msg) {
// TODO Auto-generated method stub
switch (msg.arg1) {
case 1: { // 成功
JSONObject object = (JSONObject) msg.obj;
try {
openid = object.getString("openid").toString();
sBuilder.append("openid為:"+openid+"
");
access_token = object.getString("access_token").toString();
url = url + "?access_token="+access_token+"&oauth_consumer_key="+APP_ID+
"&openid="+openid+"&format=json";
new MyUrlThread(url.toString(), 2,sHandler).start();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
break;
case 2: { // 失敗
Toast.makeText(this, "", Toast.LENGTH_SHORT).show();
return false;
}
case 3: { // 取消
Toast.makeText(this, "", Toast.LENGTH_SHORT).show();
return false;
}
}
return false;
}
如果授權成功,即可得到返回的Openid。
從而,可以根據Openid調用騰訊所提供的官方介面,實現需要的操作。
❸ android第三方登錄平台有哪些
android第三方登錄平台有qq. 微信. 新浪微博