Android 上的 Google 登录
复制一个设置提示,包括安装步骤和此插件的完整Markdown指南
介绍
标题为“介绍”在本指南中,您将学习如何在 Android 设备上设置 Google 登录和 Capgo 社交登录。 我假设您已经阅读了.
使用 Google 登录
标题为“使用 Google 登录”In Android 中,您将学习如何设置 Google 登录。
-
创建Android客户端ID
-
点击搜索栏
-
搜索
credentials并点击APIs and Services第一个(截图中的第2个)
-
点击
create credentials
-
选择
OAuth client ID
-
选择
Android应用程序类型
-
打开Android Studio
-
在导航器的最下方,找到
Gradle Scripts
-
找到
build.gradle模块app
-
复制
android.defaultConfig.applicationId. 这将是您的package name在 Google 控制台中
-
现在,打开终端。确保您在应用程序的文件夹中并运行
android终端显示 gradlew signInReport 命令./gradlew signInReport
- 终端输出显示 SHA1 证书指纹
SHA1.
- 作为
applicationId并您的 SHA1 在证书字段中并点击Package NameAndroid 客户端创建表单,包名和 SHA1 字段已填充create
-
-
创建一个 Web 客户端(这是 Android 必须的)
-
前往 Google 控制台的
Create credentials页面 -
设置应用类型为
Web
-
点击
Create
-
复制客户 ID,您将其用作您的 JS/TS __CAPGO_KEEP_0__
webClientIdin your JS/TS code
-
-
请打开您的应用程序在 Android Studio 中。您可以运行
MainActivity-
在 Android Studio 中打开您的应用程序。您可以运行
cap open android -
查找
MainActivity.java-
打开
app文件夹
-
查找
java
-
找到并点击
MainActivity.javaMainActivity.java 文件在包结构中
-
-
请添加以下内容 __CAPGO_KEEP_0__
MainActivity.java. Please add the following codeimport ee.forgr.capacitor.social.login.GoogleProvider;import ee.forgr.capacitor.social.login.SocialLoginPlugin;import ee.forgr.capacitor.social.login.ModifiedMainActivityForSocialLoginPlugin;import com.getcapacitor.PluginHandle;import com.getcapacitor.Plugin;import android.content.Intent;import android.util.Log;import com.getcapacitor.BridgeActivity;// ModifiedMainActivityForSocialLoginPlugin is VERY VERY important !!!!!!public class MainActivity extends BridgeActivity implements ModifiedMainActivityForSocialLoginPlugin {@Overridepublic void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (requestCode >= GoogleProvider.REQUEST_AUTHORIZE_GOOGLE_MIN && requestCode < GoogleProvider.REQUEST_AUTHORIZE_GOOGLE_MAX) {PluginHandle pluginHandle = getBridge().getPlugin("SocialLogin");if (pluginHandle == null) {Log.i("Google Activity Result", "SocialLogin login handle is null");return;}Plugin plugin = pluginHandle.getInstance();if (!(plugin instanceof SocialLoginPlugin)) {Log.i("Google Activity Result", "SocialLogin plugin instance is not SocialLoginPlugin");return;}((SocialLoginPlugin) plugin).handleGoogleLoginIntent(requestCode, data);}}// This function will never be called, leave it empty@Overridepublic void IHaveModifiedTheMainActivityForTheUseWithSocialLoginPlugin() {}} -
保存文件
-
-
在应用程序中使用Google登录
-
首先,导入
SocialLoginimport { SocialLogin } from '@capgo/capacitor-social-login'; -
调用初始化。应仅调用一次。
// onMounted is Vue specific// webClientId is the client ID you got in the web client creation step not the android client ID.onMounted(() => {SocialLogin.initialize({google: {webClientId: '673324426943-avl4v9ubdas7a0u7igf7in03pdj1dkmg.apps.googleusercontent.com',}})}) -
调用
SocialLogin.login在应用程序中创建一个按钮,点击后执行以下code。const res = await SocialLogin.login({provider: 'google',options: {}})// handle the responseconsole.log(JSON.stringify(res))
-
-
在您的后端存储Google刷新令牌,并在后端刷新
-
配置模拟器进行测试
Device manager进入
-
在Android Studio的设备管理器中
-
虚拟设备配置中的创建虚拟设备按钮
Play Store选择任何具有
如您所见,
pixel 8支持的Play Store服务 -
点击
next
-
context":"Capgo Builder / 原生云构建产品页面。角色:短的UI标签或导航项。消息键`native_build_builder_credit_next`(原生构建构建者信用下一步)。"
Google Play. 确保OS映像类型为 必须Google Play
-
系统映像选择显示Google Play类型的映像
-
确认您的设备。您可以为模拟器命名
-
进入
Device Manager并启动您的模拟器
-
模拟器启动后,进入其设置
-
进入
Google Play
- 点击
Update等待约60秒
-
-
测试您的应用程序
如果您正确完成了所有步骤,您应该看到Google登录流程正常工作:
故障排除
故障排除如果您遇到任何问题,请首先将您的应用程序配置与Google Cloud Console值进行比较。 Android Google Sign-In故障通常由包名、SHA-1或客户端ID不匹配而导致。
凭证管理器、SHA-1和Firebase
故障排除在Android上,这个插件使用Google凭证管理器(androidx.credentials 和Google登录),而不是遗留的 GoogleSignInClient API。 Logcat错误,如 GetCredentialCustomException: [28444] Developer console is not set up correctly 来自该堆栈。
过滤 Logcat GoogleProvider 或 CapgoSocialLogin Google Cloud Console webClientId Google Cloud Console
您需要在同一个 Google Cloud 项目中创建两个 OAuth 2.0 客户端 ID 类型:
类型用途
| 位置 | Web 应用 | 服务器/ID 令牌受众 |
|---|---|---|
| Required Google Cloud setup | 您需要在同一个 Google Cloud 项目中创建两个 OAuth 2.0 客户端 ID 类型: | webClientId 在 SocialLogin.initialize() |
| Android中,每个签名密钥 | 证明您的APK有权调用Google | 仅限Google Cloud Console。不要将此ID传递给 webClientId |
常见的错误是使用Android客户端ID webClientId。凭证管理器要求在那里使用Web客户端ID。Android客户端只需要在控制台中正确的包名和SHA-1注册。
为每个签名证书创建一个Android OAuth客户端,用于测试的构建:
- Debug:从
./gradlew signingReport用于调试版本。 - Release:从您实际安装的APK或AAB中。
- Play App Signing:从Play Console > App integrity > App signing key certificate。即使您的上传密钥SHA-1已经注册,也需要此项以支持Play Store构建。
The applicationId 在 android/app/build.gradle 必须完全匹配 Android OAuth 客户端包名,包括任何后缀。 .debug 如果 OAuth 同意屏幕处于测试模式,请在 Audience > 测试用户下添加您测试的每个 Google 帐户。发布应用到生产环境不是必需的,
和 email 范围。数字资产链接( profile )不需要通过凭据管理器进行 Google 登录。assetlinks.jsonGoogle Cloud 的更改可能需要几小时才能传播。
错误 28444:开发者控制台设置不正确
错误 28444:开发者控制台设置不正确
这通常意味着 Google 拒绝了安装的 APK 签名证书、包名和. 请按照以下检查清单进行工作: webClientId__CAPGO_KEEP_0__
- 确认
webClientId是Web应用程序客户端ID,结尾为.apps.googleusercontent.com. - 运行应用程序,重现故障,并阅读Logcat以获取
GoogleProvider,signingSha1=, 和package=. - 在 Google Cloud Console > Credentials,打开您的Android OAuth客户端并验证exact包名和SHA-1。
- 如果测试发布版,请注册该版本的SHA-1,而不是仅限调试keystore。
- 如果应用程序通过Play Store分发,也注册Play App Signing SHA-1。
- 确保Web和Android客户端位于同一个Google Cloud项目中。
- 如果consent屏幕处于测试状态,请确认Google账户是测试用户。
- 等待并在控制台更改后重试。
USER_CANCELLED 在一个配置错误的调试构建中选择一个账户后,仍然可能出现 SHA-1 或客户端 ID 匹配问题。首先修复控制台设置。
从安装的构建中提取 SHA-1
从安装的构建中提取 SHA-1调试或本地构建:
cd android && ./gradlew signingReport签名的发布 APK:
keytool -printcert -jarfile android/app/release/app-release.apk将该 SHA-1 添加到与包名匹配的 Android OAuth 客户端中,重新安装相同的签名 APK,然后再次测试:
adb install android/app/release/app-release.apk读取登录结果
标题:读取登录结果在此处找到 result:
const login = await SocialLogin.login({ provider: 'google' });const idToken = login.result?.idToken;对于 Firebase Auth,请使用以下凭据创建凭据 idToken 并使用 Web 客户端 ID 作为 webClientId 在 initialize.
如果您无法获取开发 SHA-1 证书,请尝试自定义 keystore。 此问题评论 解释了如何将 keystore 添加到您的项目中。
继续从 Android Google 登录
标题:继续从 Android Google 登录如果您正在使用 Google Android 登录 来规划身份验证和帐户流程,连接它与 使用 @capgo/capacitor 社交登录 为原生能力在使用 @capgo/capacitor 社交登录, @capgo/capacitor 社交登录 为实现细节在 @capgo/capacitor 社交登录, @capgo/capacitor Passkey 为实现细节在 @capgo/capacitor Passkey, @capgo/capacitor 原生生物识别 为实现细节在 @capgo/capacitor 原生生物识别,和 双因素身份验证 关于两步验证的实现细节。