1. 安卓手機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調用騰訊所提供的官方介面,實現需要的操作。