返回顶部
首页 > 资讯 > 移动开发 >Android-接入谷歌登录
  • 853
分享到

Android-接入谷歌登录

android 2023-09-04 10:09:07 853人浏览 八月长安
摘要

1.登录分类 授权登录 和 一键登录 一键登录在部分设备会登录不了,报白名单错误,国外的 大多数 应用使用的是授权登录,建议使用授权登录 2.申请key 在FireBase中直接创建Android 项

1.登录分类

授权登录一键登录
一键登录在部分设备会登录不了,报白名单错误,国外的 大多数 应用使用的是授权登录,建议使用授权登录

2.申请key

在FireBase中直接创建Android 项目,会在Google Cloud 直接生成相关的key,不需要在GoogleCloud手动创建。
会生成一个Android 和 一个 WEB 的配置,需要使用 Web 的 Key。

3.授权登录

class LoginActivity : BaseActivity() {    compaNIOn object {        private const val SIGN_LOGIN = 901                private const val SERVER_CLIENT_ID = "xxx"    }        private lateinit var auth: FirebaseAuth    private var mGoogleSignInClient: GoogleSignInClient? = null    private fun signInClient() {        if (mGoogleSignInClient == null) {            val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)                .requestEmail()                .requestIdToken(SERVER_CLIENT_ID)                .build();            mGoogleSignInClient = GoogleSignIn.getClient(this, gso);        }    }    private fun getGoogleIntent(): Intent {        var signInInten: Intent        if (mGoogleSignInClient == null) {            signInClient();        }        signInInten = mGoogleSignInClient!!.signInIntent;        return signInInten    }    override fun onCreate(savedInstanceState: Bundle?) {        super.onCreate(savedInstanceState)        ...        auth = FirebaseAuth.getInstance()        btnLoginGoogle.setOnClickListener {                signInClient()                startActivityForResult(getGoogleIntent(), SIGN_LOGIN)        }    }    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {        super.onActivityResult(requestCode, resultCode, data)        when (requestCode) {            SIGN_LOGIN -> {                val task = GoogleSignIn.getSignedInAccountFromIntent(data);                if (task == null) {                    Log.d("tag", "task:null")                }                try {                    val account = task.getResult(apiException::class.java)                    Log.d("tag", "id:" + account.idToken)                    val firebaseCredential = GoogleAuthProvider.getCredential(account.idToken, null)                    auth.signInWithCredential(firebaseCredential)                        .addOnCompleteListener(this@LoginActivity) { task ->if (task.isSuccessful) {    // Sign in success, update UI with the signed-in user's infORMation    Log.d("tag", "signInWithCredential:success")    val user = auth.currentUser    user?.getIdToken(true)        ?.addOnCompleteListener(OnCompleteListener<GetTokenResult?> { task ->            if (task.isSuccessful) {                val idToken: String? = task.result.token               // 和后台交互进行登录            } else {                // Handle error -> task.getException();            }        })} else {    // If sign in fails, display a message to the user.    Log.w("tag", "signInWithCredential:failure", task.exception)}                        }                } catch (e: ApiException) {                    Log.d("tag", "task:" + e.localizedMessage)                }            }        }    }}

4.一键登录

    private val REQ_ONE_TAP = 2  // Can be any integer unique to the Activity    private lateinit var oneTapClient: SignInClient    private lateinit var signInRequest: BeginSignInRequest        oneTapClient = Identity.getSignInClient(this)        signInRequest = BeginSignInRequest.builder()            .setPassWordRequestOptions(BeginSignInRequest.PasswordRequestOptions.builder().setSupported(true).build())            .setGoogleIdTokenRequestOptions(                BeginSignInRequest.GoogleIdTokenRequestOptions.builder()                    .setSupported(true)                    .setServerClientId(ServerClientId)                    .setFilterByAuthorizedAccounts(false)                    .build()            ).setAutoSelectEnabled(true).build()//https://developers.google.com/identity/one-tap/android/get-saved-credentials                oneTapClient.beginSignIn(signInRequest)                    .addOnSuccessListener(this@LoginActivity) { result ->                        try {startIntentSenderForResult(    result.pendingIntent.intentSender, REQ_ONE_TAP,    null, 0, 0, 0, null)                        } catch (e: IntentSender.SendIntentException) {Log.e("tag", "Couldn't start One Tap UI: ${e.localizedMessage}")                        }                    }                    .addOnFailureListener(this@LoginActivity) { e ->                        // No saved credentials found. Launch the One Tap sign-up flow, or                        // do nothing and continue presenting the signed-out UI.                        Log.d("tag", e.localizedMessage)             }

onActivityResult

REQ_ONE_TAP -> {                try {                    val credential = oneTapClient.getSignInCredentialFromIntent(data)                    val idToken = credential.googleIdToken                    val username = credential.id                    val password = credential.password                    when {                        idToken != null -> {// Got an ID token from Google. Use it to authenticate// with your backend.Log.d("tag", "Got ID token:" + idToken)val firebaseCredential = GoogleAuthProvider.getCredential(idToken, null)auth.signInWithCredential(firebaseCredential)    .addOnCompleteListener(this@LoginActivity) { task ->        if (task.isSuccessful) {            // Sign in success, update UI with the signed-in user's information            Log.d("tag", "signInWithCredential:success")            val user = auth.currentUser            user?.getIdToken(true)                ?.addOnCompleteListener(OnCompleteListener<GetTokenResult?> { task ->                    if (task.isSuccessful) {                        val idToken: String? = task.result.token                        Log.d("tag", "uid: " + user.uid)                        Log.d("tag", "IDToken: " + idToken)                    } else {                        // Handle error -> task.getException();                    }                })        } else {            // If sign in fails, display a message to the user.            Log.w("tag", "signInWithCredential:failure", task.exception)                 }    }                        }                        password != null -> {// Got a saved username and password. Use them to authenticate// with your backend.Log.d("tag", "Got password.")                        }                        else -> {// Shouldn't happen.Log.d("tag", "No ID token or password!")                        }                    }                } catch (e: ApiException) {                    // ...                }            }

5.常见错误

有可能错误是vpn的问题,检查下自己的网络

5.1 Failure16:Cannot find a matching credential.

一键登录场景下:修改了登录模式为注册登录

5.2 Failure10:Caller not whitelisted to call this API

测试账号没有加入Google Cloud

5.3 12500

检查 debug 和 release 的签名是否配置到 firebase

5.4 Firebase ID token has incorrect “aud” (audience) claim.

后台校验失败,获取到 idToken 以后还需要用 GoogleAuthProvider 的api进行二次处理

5.5 Firebase Installations Service is unavailable.

网络问题,需要在控制台才能看到错误信息,不会在登录回调里面展示。连接外网
com.google.firebase.installations.FirebaseInstallationsException: Firebase Installations Service is unavailable. Please try again later.

资料

❤️Android Google 登录接入❤️

来源地址:https://blog.csdn.net/Android_yh/article/details/129352068

--结束END--

本文标题: Android-接入谷歌登录

本文链接: https://lsjlt.com/news/393329.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android-接入谷歌登录
    1.登录分类 授权登录 和 一键登录 一键登录在部分设备会登录不了,报白名单错误,国外的 大多数 应用使用的是授权登录,建议使用授权登录 2.申请key 在FireBase中直接创建Android 项...
    99+
    2023-09-04
    android
  • Android应用添加谷歌登录(Google Sign In)
    Android平台添加Google登录便于读取用户信息,也便于将应用发布到GooglePlay。 具体步骤如下,个人觉得还是比较繁琐的,一步一步来看吧。 服务账号创建项目 developers.goo...
    99+
    2023-09-23
    android java 服务器
  • 用谷歌登录亚马逊账号
    打开 Google Chrome 浏览器并登录您的 Google Chrome 浏览器账户。 点击 "登录" 按钮,输入您的 Google Chrome 浏览器账户的登录信息。 如果您使用的是 Windows 操作系统,请使用以下命令打开...
    99+
    2023-10-27
    亚马逊 账号 用谷歌
  • 云服务器如何登录谷歌账号
    1. 选择合适的云服务器 在登录谷歌账号之前,首先需要选择一台合适的云服务器。常见的云服务器提供商包括亚马逊AWS、谷歌云、微软Azure等。根据你的需求和预算选择一家云服务器提供商,并创建一台虚拟机实例。 2. 连接到云服务器 一旦你创...
    99+
    2023-10-27
    账号 服务器
  • 华为云服务器如何登录谷歌账号
    如果您使用的是华为云服务器(华为EC2 Server),您可以使用以下几种方法登录: 使用华为云服务器的登录入口:如果华为云服务器支持PIN码(密码)登录,您可以在命令行中输入PIN码,然后在云服务器控制台中输入命令来登录。 华为云服务...
    99+
    2023-10-26
    华为 账号 服务器
  • 阿里云服务器如何登录谷歌账号
    如果您使用的是阿里云的云服务器,并且需要登录谷歌账号,您需要按照以下步骤操作: 打开谷歌官网(https://google.com),进入谷歌账号注册页面。您需要选择一个账号类型并输入您的用户名和密码。注册过程中,您需要选择一个谷歌服务...
    99+
    2023-10-27
    阿里 账号 服务器
  • 手机怎么用云服务器登录谷歌账号
    如果您的手机已经安装了谷歌服务,可以通过以下步骤使用云服务器登录谷歌账号: 在手机设置中进入“应用程序”“设置”“应用商店”“谷歌账户”。 在谷歌账户页面中,点击“创建新账户”。 输入您的谷歌登录密码,点击“创建”。 在弹出窗口中,选择...
    99+
    2023-10-26
    账号 服务器 手机
  • 谷歌云服务器怎么用手机登录账号
    首先,我们需要打开谷歌云服务器的官方网站。进入网站后,我们可以看到右上角的“登录”按钮,点击它,然后输入您的用户名和密码进行登录。登录后,您可以在网站上选择需要存储和处理数据的服务器。如果您需要在不同的服务器上同时运行多个应用程序,您可以通...
    99+
    2023-10-27
    用手 账号 服务器
  • 使用云服务器登录谷歌账号的方法
    1. 下载并安装谷歌账号应用 在安卓系统中,你需要先下载并安装谷歌账号应用。你可以在Google Play商店中搜索"谷歌账号",然后点击安装按钮进行下载和安装。 2. 打开谷歌账号应用 安装完成后,你可以在应用列表中找到谷歌账号应用的图...
    99+
    2023-10-27
    账号 服务器 方法
  • 为什么用云服务器不能用谷歌登录
    安全措施不足:如果云服务器提供商没有严格的安全措施,例如防火墙、SSL加密等,那么可能会导致用户的帐户信息泄露,从而被黑客攻击。 用户身份认证不足:如果用户没有通过云服务器提供商的身份认证,那么他们可能无法成功注册并登录到云服务器上。 网...
    99+
    2023-10-28
    不能用 什么用 服务器
  • 阿里云轻量级服务器谷歌登录实践
    随着云计算的普及和应用,越来越多的开发者和企业开始使用阿里云轻量级服务器。本文将介绍如何在阿里云轻量级服务器上实现谷歌登录功能,以便更好地管理和保护用户数据。 一、谷歌登录的原理谷歌登录是一种多因素认证方式,它通过用户输入的用户名和密码进行...
    99+
    2023-11-23
    阿里 服务器
  • vue怎么调用谷歌授权登录获取用户通讯录
    这篇文章主要讲解了“vue怎么调用谷歌授权登录获取用户通讯录”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue怎么调用谷歌授权登录获取用户通讯录”吧!调用谷歌授权,获取用户通讯录信息业务背...
    99+
    2023-07-02
  • 阿里云服务器如何接入谷歌账号
    简介 在使用阿里云服务器时,有时需要将服务器与谷歌账号进行关联,以便进行一些特定的操作和管理。本文将介绍如何将阿里云服务器接入谷歌账号,以便实现更灵活的管理和操作。接入谷歌账号的步骤步骤一:创建谷歌账号首先,你需要在谷歌官方网站上创建一个谷...
    99+
    2024-01-17
    阿里 账号 服务器
  • 手机怎么用云服务器登录谷歌账号呢
    如果您的手机已经安装了谷歌服务框架(GMS),并且可以通过GMS Pass和谷歌账号登录谷歌账户,那么您只需登录Google账号即可进行云服务器登录。 您可以使用以下步骤登录Google账号: 打开您的谷歌账号,并点击右下角的登录按钮。...
    99+
    2023-10-26
    账号 服务器 手机
  • 华为云服务器如何登录谷歌账号密码
    如果您想使用华为云服务器进行谷歌账户密码登录,您可以按照以下步骤进行操作: 打开华为云服务器的网站https://cloudservices.huawei.com/cn/ 在华为云服务器的登录页面,使用浏览器的 A 或 A+ 模式登录h...
    99+
    2023-10-26
    华为 账号 密码
  • 阿里云服务器如何登录谷歌账号密码
    cnxp start cnxp stop 然后,在控制台中找到您购买的ECS实例,并进入实例列表页面,输入以下命令重置密码: set accessible password "123456" 如果您输入的命令无法激活您的Googl...
    99+
    2023-10-27
    阿里 账号 密码
  • 为什么用云服务器不能用谷歌登录了
    使用云服务器登录谷歌账号可能会出现登录失败的情况,这是因为谷歌的安全机制会检测登录的 IP 地址是否与账号绑定的常用 IP 地址相同。如果检测到登录的 IP 地址与常用 IP 地址不同,谷歌会认为这是一次可疑的登录行为,从而拒绝登录请求。 ...
    99+
    2023-10-27
    不能用 什么用 服务器
  • 谷歌云服务器:用手机登录游戏的方法
    1. 了解谷歌云服务器 谷歌云服务器是一种云计算服务,可以提供虚拟机实例,让用户在云端运行应用程序。通过谷歌云服务器,你可以远程访问和管理你的虚拟机实例,包括在手机上登录游戏。 2. 创建谷歌云服务器实例 首先,你需要在谷歌云平台上创建一...
    99+
    2023-10-27
    用手 服务器 方法
  • Android自定义谷歌风格ProgressBar
    本文实例为大家分享了谷歌风格ProgressBar的具体代码,供大家参考,具体内容如下 具体代码 package zms.demo.colorprogress; impor...
    99+
    2022-06-06
    progressbar 谷歌 Android
  • 华为云服务器如何登录谷歌账号和密码
    华为云服务器需要使用 OpenStack 云平台,登录谷歌账号和密码的方法如下: 首先在华为云控制台(CloudCCenter)中选择服务器的“登录和登出”选项,然后进入谷歌帐号的登录界面。 在谷歌帐号的登录界面中,输入您的帐户信息,包...
    99+
    2023-10-26
    华为 账号 密码
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作