要實現QQ第三方登錄,其實只需要一個封裝類:QQLoginManager
幾乎 三行代碼 就實現QQ登錄功能
這里先給出Github開源項目地址,項目下有詳細的使用說明
下面就開始詳細說一說怎么實現基於這個強大開源項目的安卓第三方QQ登錄吧!
准備工作:獲取 AppID
點擊應用接入
第一次需要按照說明 注冊類型 ,如果是小白練手,推薦選擇個人
通過步驟完成注冊(可能需要實名認證,一般審核需要12個小時)
在管理中心創建應用
選擇創建的類型
注意:到這里如果只是單純的個人測試用,只需要填寫一下應用名稱、選一下應用類型,然后點擊【保存】就可以了,並不需要真的發布到應用寶上,之后AppId就可以用了
再注意一下:一個AppID只能在一個應用上使用,如果另一個項目也需要使用QQ登錄,需要在管理中心新建一個應用
到了這里就可以進行開發工作了,由於本篇博客主要內容為通過一個集成封裝類實現安卓的QQ第三方登錄,所以原生的QQ登錄、從頭到尾的寫法就不贅述了
引入開源項目(GitHub開源項目:點這里 下載地址:點這里)
Step 1. 引入SDK JAR包
下載Jar包
你可以點擊這里下載 騰訊官方QQ-SDK-JAR 包 (下載完成后只需要解壓出里面 libs 文件夾里的 jar文件 即可)
也可以直接使用GitHub項目里 qq_sdk_jar文件夾
里的 jar包
(這個jar包為騰訊官方於為2018年5月更新的版本,你也可以點擊這里查看 最新官方SDK包版本 )
在項目里引入Jar包
這里給出一種引入Jar包的方法(其他方法也可以)
以Android Studio為例:
將下載好的jar包放到你的安卓項目的
app\libs
文件夾下
在 Android Studio 中點擊
File->Project Structure
,然后選擇app->Dependencies
,這時候點擊右上角的+
號,選擇Jar dependency
,然后選擇上一步libs
文件夾里的jar包
添加即可
Step 2. 修改AndroidManifest文件
(1) 將下列代碼復制到 AndroidManifest.xml
文件的 <application></application>
中 (注意將代碼里的app_id完善):
<activity
android:name="com.tencent.tauth.AuthActivity"
android:launchMode="singleTask"
android:noHistory="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- 這地方需要用你在開放平台申請的appid:tencent+appid -->
<data android:scheme="tencent00000000" />
</intent-filter>
</activity>
<activity
android:name="com.tencent.connect.common.AssistActivity"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="behind"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
(2) 添加網絡權限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Step 3. 引入QQLoginManager.java文件
下載GitHub項目的 QQLoginManager.java
文件,將其復制到自己的安卓項目中
Step 4. 代碼示例
按照下列示例代碼,模仿其添加到自己的Activity類中,之后你就可以在需要的地方(如點擊某個按鈕后)調用函數:qqLoginManager.launchQQLogin()
,即可喚起QQ登錄
public class MainActivity extends AppCompatActivity implements QQLoginManager.QQLoginListener {
private QQLoginManager qqLoginManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 實例化QQLoginManager, 傳入你的app_id
qqLoginManager = new QQLoginManager("app_id", this);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
// 回調
qqLoginManager.onActivityResultData(requestCode, resultCode, data);
}
@Override
public void onQQLoginSuccess(JSONObject jsonObject) {
// 登錄成功
}
@Override
public void onQQLoginCancel() {
// 登錄取消
}
@Override
public void onQQLoginError(UiError uiError) {
// 登錄出錯
}
}
補充說明(函數onQQLoginSuccess:JSONObject里QQ用戶信息字段格式)
{
"nickname":昵稱,
"gender":性別,
"province":所在省份,
"city":所在城市,
"year":出生年,
"constellation":星座,
"figureurl":頭像URL,
"figureurl_1":頭像URL,
"figureurl_2":頭像URL,
"figureurl_qq_1":頭像URL,
"figureurl_qq_2":頭像URL,
"vip":是否為qq會員,
"level":qq會員等級,
"is_yellow_vip":是否為黃鑽,
"yellow_vip_level":黃鑽等級,
"is_yellow_year_vip":是否為黃鑽年會員
}