Android 接入 Google 和 Facebook 第三方登录指南(初始版)
在现代 Android 社交应用中,第三方登录几乎是必备功能。本文将以 Android 为例,详细讲解如何接入 Google 登录 和 Facebook 登录,并提供完整示例代码与注意事项。
📌 目录
-
前言
-
接入第三方登录的优势
-
Google 登录接入指南
-
准备工作
-
配置 Google 服务
-
实现登录逻辑
-
-
Facebook 登录接入指南
-
准备工作
-
配置 Facebook App
-
实现登录逻辑
-
-
处理登录回调与用户信息
-
常见问题与注意事项
-
总结
🔹 一、前言
第三方登录可以简化用户注册和登录流程,提高用户转化率,同时减少密码管理的麻烦。
在 Android 上,Google 登录主要适配 Google 账号,Facebook 登录主要适配 Facebook 账号。通过这两种方式,用户可快速注册或登录你的应用。
🔹 二、接入第三方登录的优势
降低注册门槛:用户无需输入邮箱或密码即可登录
提升用户留存:登录体验更流畅
获取基本用户信息:如昵称、头像、邮箱等
支持社交分享与社交功能:便于后续拓展
🔹 三、Google 登录接入指南
准备工作
Android Studio ≥ 4.0
AndroidX 项目
Google Play Services 库
在 build.gradle
添加依赖:
dependencies { implementation 'com.google.android.gms:play-services-auth:20.7.0' }
配置 Google 服务
打开 Google Cloud Console
创建项目,并启用 Google Sign-In API
配置 OAuth 客户端 ID,类型选择 Android
获取 SHA-1 指纹(
./gradlew signingReport
)并填写
实现登录逻辑
class GoogleLoginActivity : AppCompatActivity() {private lateinit var googleSignInClient: GoogleSignInClientprivate val RC_SIGN_IN = 1001override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_google_login)// 配置登录选项val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).requestEmail().build()googleSignInClient = GoogleSignIn.getClient(this, gso)findViewById<Button>(R.id.btnGoogleLogin).setOnClickListener {val signInIntent = googleSignInClient.signInIntentstartActivityForResult(signInIntent, RC_SIGN_IN)}}override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {super.onActivityResult(requestCode, resultCode, data)if (requestCode == RC_SIGN_IN) {val task = GoogleSignIn.getSignedInAccountFromIntent(data)try {val account = task.getResult(ApiException::class.java)// 登录成功val email = account?.emailval name = account?.displayNameval idToken = account?.idTokenToast.makeText(this, "登录成功:$name", Toast.LENGTH_SHORT).show()} catch (e: ApiException) {Toast.makeText(this, "登录失败: ${e.statusCode}", Toast.LENGTH_SHORT).show()}}}
}
🔹 四、Facebook 登录接入指南
准备工作
Android Studio ≥ 4.0
AndroidX 项目
Facebook SDK
在 build.gradle
添加依赖:
dependencies { implementation 'com.facebook.android:facebook-login:latest.release' }
配置 Facebook App
打开 Facebook Developer Console
创建 App 并选择 Facebook Login
配置 包名 和 Key Hash
获取 App ID
在 AndroidManifest.xml
添加:
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
实现登录逻辑
class FacebookLoginActivity : AppCompatActivity() {private lateinit var callbackManager: CallbackManageroverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_facebook_login)callbackManager = CallbackManager.Factory.create()val loginButton = findViewById<LoginButton>(R.id.btnFacebookLogin)loginButton.setPermissions(listOf("email", "public_profile"))loginButton.registerCallback(callbackManager,object : FacebookCallback<LoginResult> {override fun onSuccess(result: LoginResult) {val accessToken = result.accessToken.tokenToast.makeText(this@FacebookLoginActivity, "Facebook 登录成功", Toast.LENGTH_SHORT).show()}override fun onCancel() {Toast.makeText(this@FacebookLoginActivity, "Facebook 登录取消", Toast.LENGTH_SHORT).show()}override fun onError(error: FacebookException) {Toast.makeText(this@FacebookLoginActivity, "登录出错: ${error.message}", Toast.LENGTH_SHORT).show()}})}override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {super.onActivityResult(requestCode, resultCode, data)callbackManager.onActivityResult(requestCode, resultCode, data)}
}
🔹 五、处理登录回调与用户信息
Google:
GoogleSignInAccount
获取idToken
,displayName
Facebook:
AccessToken
或GraphRequest
获取用户头像、昵称、邮箱
示例(Facebook Graph API):
GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken()) { obj, _ ->val name = obj?.getString("name")val email = obj?.getString("email")
}
🔹 六、常见问题与注意事项
SHA-1 与包名配置错误
会导致 Google 登录失败或 Facebook 登录异常
网络权限
<uses-permission android:name="android.permission.INTERNET"/>
Facebook Key Hash
Windows / Mac 生成方法不同,确保使用正确命令
隐私政策
第三方登录必须在应用中提供隐私政策声明
测试账号
Facebook 有测试用户机制,开发阶段可用测试账号登录
🔹 七、总结
通过本文,你可以:
在 Android 项目中快速集成 Google 和 Facebook 登录
获取用户基本信息,实现社交注册/登录
避免常见配置错误,提高上线效率
💡 核心思路:配置 OAuth / SDK → 发起登录 → 处理回调 → 获取用户信息 → 业务逻辑处理