当前位置: 首页 > news >正文

Android 接入 Google 和 Facebook 第三方登录指南(初始版)

在现代 Android 社交应用中,第三方登录几乎是必备功能。本文将以 Android 为例,详细讲解如何接入 Google 登录Facebook 登录,并提供完整示例代码与注意事项。


📌 目录

  1. 前言

  2. 接入第三方登录的优势

  3. Google 登录接入指南

    • 准备工作

    • 配置 Google 服务

    • 实现登录逻辑

  4. Facebook 登录接入指南

    • 准备工作

    • 配置 Facebook App

    • 实现登录逻辑

  5. 处理登录回调与用户信息

  6. 常见问题与注意事项

  7. 总结


🔹 一、前言

第三方登录可以简化用户注册和登录流程,提高用户转化率,同时减少密码管理的麻烦。
在 Android 上,Google 登录主要适配 Google 账号,Facebook 登录主要适配 Facebook 账号。通过这两种方式,用户可快速注册或登录你的应用。


🔹 二、接入第三方登录的优势

  • 降低注册门槛:用户无需输入邮箱或密码即可登录

  • 提升用户留存:登录体验更流畅

  • 获取基本用户信息:如昵称、头像、邮箱等

  • 支持社交分享与社交功能:便于后续拓展


🔹 三、Google 登录接入指南

准备工作

  1. Android Studio ≥ 4.0

  2. AndroidX 项目

  3. Google Play Services 库

build.gradle 添加依赖:

dependencies { implementation 'com.google.android.gms:play-services-auth:20.7.0' }

配置 Google 服务

  1. 打开 Google Cloud Console

  2. 创建项目,并启用 Google Sign-In API

  3. 配置 OAuth 客户端 ID,类型选择 Android

  4. 获取 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 登录接入指南

准备工作

  1. Android Studio ≥ 4.0

  2. AndroidX 项目

  3. Facebook SDK

build.gradle 添加依赖:

dependencies { implementation 'com.facebook.android:facebook-login:latest.release' }

配置 Facebook App

  1. 打开 Facebook Developer Console

  2. 创建 App 并选择 Facebook Login

  3. 配置 包名Key Hash

  4. 获取 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, email, displayName

  • Facebook:AccessTokenGraphRequest 获取用户头像、昵称、邮箱

示例(Facebook Graph API):

GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken()) { obj, _ ->val name = obj?.getString("name")val email = obj?.getString("email")
}

🔹 六、常见问题与注意事项

  1. SHA-1 与包名配置错误

    • 会导致 Google 登录失败或 Facebook 登录异常

  2. 网络权限

    <uses-permission android:name="android.permission.INTERNET"/>
  3. Facebook Key Hash

    • Windows / Mac 生成方法不同,确保使用正确命令

  4. 隐私政策

    • 第三方登录必须在应用中提供隐私政策声明

  5. 测试账号

    • Facebook 有测试用户机制,开发阶段可用测试账号登录


🔹 七、总结

通过本文,你可以:

  • 在 Android 项目中快速集成 Google 和 Facebook 登录

  • 获取用户基本信息,实现社交注册/登录

  • 避免常见配置错误,提高上线效率

💡 核心思路:配置 OAuth / SDK → 发起登录 → 处理回调 → 获取用户信息 → 业务逻辑处理

http://www.dtcms.com/a/512005.html

相关文章:

  • Aspose.words关于builder.CellFormat.Width、row.Cells[0].CellFormat.Width的设置单元格宽度区别
  • 罗湖网站建设的公司哪家好阳泉做网站公司
  • 口碑好的共晶贴片机公司
  • 挑战概率直觉:蒙提霍尔问题的解密与应用
  • 网站域名哪些后缀更好给自己公司做个网站
  • 算法笔记 07
  • Steps + Input.TextArea + InfiniteScroll 联调优化
  • /dev/mem 原理及使用
  • 机关网站建设 方案泰安新闻完整版
  • Endpoint
  • 阿里巴巴双11微服务智能监控体系:从全链路追踪到AI自愈的技术实践
  • 在ros2 humble版本上安装D455相机并获取图像和深度信息
  • C++DirectX9坐标系与基本图元之渲染状态(RenderState)_0304
  • 网站建设app长春seo技术
  • 【C++】力扣hot100错误总结
  • C++中的vector讲解
  • 笔记【字符串,转义字符,注释】
  • visual studio安装本地帮助手册
  • 北京市基础建设质量监督局网站wordpress 插件怎么看
  • 大模型技术分析与演进逻辑
  • 苏州模板网站建站长沙网站建设推广
  • 从零起步学习MySQL || 第六章:MySQL数据库中的一条数据是如何存储的?(结合源码深度解析)
  • 微信小程序页面配置,基本语法,页面切换,tabbar全局配置
  • 数据结构 07
  • 18.基本的ACL
  • 网站后台编程语言创业中文网站模板
  • 从“刘易斯拐点”到“骑手拐点”,即时零售3.0时代还有多远?
  • 有没有一种app类似网站建设开发定制软件开发
  • 沈阳网站建设建设公司普洱网站建设
  • 蓝桥杯题库——部分简单题题解(Java)