android - Google One Tap BeginSignIn 失败 (Android)
问题描述
我正在使用 C#、Visual Studio 和 Xamarin 在 Android APP 中实现 Google One Tap。
我的根本问题是我正在使用两台计算机。当我从计算机 A 构建和调试应用程序时,BeginSignIn() 会按预期到达 OnActivityResult()。当我从计算机 B 构建和调试时, BeginSignIn() 总是导致失败侦听器。在这两种情况下,我都将 APP 加载到同一个平板电脑上。在这两种情况下,我都在克隆项目代码而不做任何更改。
由于我使用同一台平板电脑通过 USB 连接到任一计算机进行测试,因此平板电脑上显然保存了一个凭据(因为它在计算机 A 上按预期工作)。
除了我上面描述的东西之外,我还尝试在计算机 B 上构建一个 APK 并将其安装在平板电脑上。这具有相同的结果,即,在调用 BeginSignIn() 之后,它最终进入了失败侦听器。然后我尝试在计算机 A 上构建一个 APK。平板电脑上的这个 FAILED,即在 BeginSignIn() 之后,它转到了失败侦听器。所以,我尝试了 4 种不同的方法:从计算机 A、B 调试和在计算机 A、B 上构建的 APK。在这 4 个中,唯一一个通过登录过程而没有错误的是从计算机 A 调试。
这是用于创建请求数据包的片段。它非常接近文档页面上关于 Google One Tap的代码,除了这是 C# 而不是 Java。
TheBeginSignInRequest = new BeginSignInRequest.Builder()
.SetPasswordRequestOptions(new PasswordRequestOptions.Builder()
.SetSupported(true)
.Build())
.SetGoogleIdTokenRequestOptions(
new GoogleIdTokenRequestOptions.Builder()
.SetSupported(true)
// Your server's client ID, not your Android client ID.
.SetServerClientId(
GetString(Resource.String.default_web_client_id))
.SetFilterByAuthorizedAccounts(false)
.Build())
.SetAutoSelectEnabled(false)
.Build();
这是启动 BeginSignIn 的片段。在计算机 A 上,这会导致 Complete 和 Success 侦听器。在计算机 B 上,这会导致 Complete 和 Failure 侦听器。
Log.Info("bob", "SignInButton_Click: sign in.");
var SignInTask = TheOneTap_SignInClient.BeginSignIn(TheBeginSignInRequest);
SignInTask.AddOnCanceledListener(this);
SignInTask.AddOnCompleteListener(this);
SignInTask.AddOnSuccessListener(this);
SignInTask.AddOnFailureListener(this);
这是来自计算机 A 的日志。我只包括到 OnSuccess() 的日志,因为它相当于计算机 B 上的 OnFailure()。
10-11 16:18:00.091 14053 14053 I bob : SignInButton_Click: sign in.
10-11 16:18:00.149 866 2818 D AccountManagerService: getUserAccounts0
10-11 16:18:00.171 866 2818 D AccountManagerService: getUserAccounts0
10-11 16:18:00.173 866 1568 D AccountManagerService: getUserAccounts0
10-11 16:18:00.173 866 1778 D AccountManagerService: getUserAccounts0
10-11 16:18:00.174 866 1778 I chatty : uid=1000(system) Binder:866_E identical 1 line
10-11 16:18:00.175 866 1778 D AccountManagerService: getUserAccounts0
10-11 16:18:00.176 866 2818 D AccountManagerService: getUserAccounts0
10-11 16:18:00.177 866 2818 I chatty : uid=1000(system) Binder:866_11 identical 1 line
10-11 16:18:00.180 866 2818 D AccountManagerService: getUserAccounts0
10-11 16:18:00.182 866 4626 D AccountManagerService: getUserAccounts0
10-11 16:18:00.184 866 4626 D AccountManagerService: getUserAccounts0
10-11 16:18:00.185 866 2818 D AccountManagerService: getUserAccounts0
10-11 16:18:00.188 866 4626 D AccountManagerService: getUserAccounts0
10-11 16:18:00.190 866 2818 D AccountManagerService: getUserAccounts0
10-11 16:18:00.190 866 2818 D AccountManagerService: getUserAccounts0
10-11 16:18:00.201 1594 1610 I System.out: (HTTPLog)-Static: isSBSettingEnabled false
10-11 16:18:00.201 1594 1610 I System.out: (HTTPLog)-Static: isSBSettingEnabled false
10-11 16:18:00.326 866 4626 D AccountManagerService: getUserAccounts0
10-11 16:18:00.327 1594 1610 E Auth : [GoogleAccountDataServiceImpl] getToken() -> NEED_REMOTE_CONSENT. App: com.SalmonCreekGames.SolitaireMobile, Service: oauth2:openid
10-11 16:18:00.346 14053 14053 I bob : OnComplete()
10-11 16:18:00.404 14053 14053 I bob : OnSuccess. result=com.google.android.gms.auth.api.identity.BeginSignInResult@5da485a
这是来自计算机 B 的日志片段,显示了它是如何在故障侦听器处结束的。
10-11 16:27:34.251 15767 15767 I bob : SignInButton_Click: sign in.
10-11 16:27:34.329 866 919 D AccountManagerService: getUserAccounts0
10-11 16:27:34.356 9625 9625 D BoundBrokerSvc: onBind: Intent { act=com.google.android.gms.chromesync.service.zeroparty.START cmp=com.google.android.gms/.chimera.GmsApiService }
10-11 16:27:34.357 9625 9625 D BoundBrokerSvc: Loading bound service for intent: Intent { act=com.google.android.gms.chromesync.service.zeroparty.START cmp=com.google.android.gms/.chimera.GmsApiService }
10-11 16:27:34.372 866 4582 D ConnectivityService: filterNetworkStateForUid() uid: 10019, pid: 1594
10-11 16:27:34.372 866 4582 D ConnectivityService: isNetworkWithLinkPropertiesBlocked: uid=10019, vpn=DISCONNECTED,false
10-11 16:27:34.372 866 4582 D ConnectivityService: filterNetworkStateForUid() uid: 10019, pid: 1594, networkInfo: [type: WIFI[], state: CONNECTED/CONNECTED, reason: (unspecified), extra: (none), failover: false, available: true, roaming: false]
10-11 16:27:34.379 866 1775 D AccountManagerService: getUserAccounts0
10-11 16:27:34.384 866 1775 D AccountManagerService: getUserAccounts0
10-11 16:27:34.385 9625 9625 D BoundBrokerSvc: onBind: Intent { act=com.google.android.gms.auth.key.retrieval.service.START cmp=com.google.android.gms/.chimera.GmsApiService }
10-11 16:27:34.385 9625 9625 D BoundBrokerSvc: Loading bound service for intent: Intent { act=com.google.android.gms.auth.key.retrieval.service.START cmp=com.google.android.gms/.chimera.GmsApiService }
10-11 16:27:34.385 866 1775 D AccountManagerService: getUserAccounts0
10-11 16:27:34.387 866 2944 D AccountManagerService: getUserAccounts0
10-11 16:27:34.392 866 919 D AccountManagerService: getUserAccounts0
10-11 16:27:34.392 866 2944 D AccountManagerService: getUserAccounts0
10-11 16:27:34.394 866 2944 D AccountManagerService: getUserAccounts0
10-11 16:27:34.394 866 919 D AccountManagerService: getUserAccounts0
10-11 16:27:34.394 866 2944 D AccountManagerService: getUserAccounts0
10-11 16:27:34.396 866 2944 D AccountManagerService: getUserAccounts0
10-11 16:27:34.396 866 919 D AccountManagerService: getUserAccounts0
10-11 16:27:34.398 866 919 D AccountManagerService: getUserAccounts0
10-11 16:27:34.398 866 2944 D AccountManagerService: getUserAccounts0
10-11 16:27:34.401 866 2944 D AccountManagerService: getUserAccounts0
10-11 16:27:34.402 866 919 D AccountManagerService: getUserAccounts0
10-11 16:27:34.403 866 2944 D AccountManagerService: getUserAccounts0
10-11 16:27:34.404 866 2944 D AccountManagerService: getUserAccounts0
10-11 16:27:34.405 866 919 D AccountManagerService: getUserAccounts0
10-11 16:27:34.409 866 2944 D AccountManagerService: getUserAccounts0
10-11 16:27:34.416 1594 22041 I System.out: (HTTPLog)-Static: isSBSettingEnabled false
10-11 16:27:34.416 1594 22041 I System.out: (HTTPLog)-Static: isSBSettingEnabled false
10-11 16:27:34.419 1594 29593 I System.out: (HTTPLog)-Static: isSBSettingEnabled false
10-11 16:27:34.419 1594 29593 I System.out: (HTTPLog)-Static: isSBSettingEnabled false
10-11 16:27:34.524 866 1775 D AccountManagerService: getUserAccounts0
10-11 16:27:34.529 866 1775 D AccountManagerService: getUserAccounts0
10-11 16:27:34.559 15767 15767 I bob : OnComplete()
10-11 16:27:34.618 15767 15767 I bob : OnFailure.
Computer A:
Windows 10 Pro Version 21H1 19043.1237
Visual Studio Community Version 16.8.4
Computer B:
Windows 10 Home Version 20H2 19042.1237
Visual Studio Community Version 16.11.12
Tablet
Samsung SM-T380
Android Version 9
解决方案
推荐阅读
- amazon-web-services - “连接丢失错误”将命令发布到在 aws 的 ec2 实例上运行的 mosquitto 代理
- bash - url中命令中的数组变量
- android - onLocationChanged 未被调用
- spring-cloud - 使用自定义端口和地址配置 Eureka 服务器和客户端
- neo4j - Neo4j 在没有本地管理员权限的情况下加载 CSV
- php - simplexml_load_string - 由于负载中的 unicode 字符导致解析错误
- python - dynamodb 简单查询执行时间
- json - 如何添加路径以将我的数据导出到文件 .csv
- jquery - 使用 jquery 解析 xml 文件中的 json
- java - 使用 AsyncTask 通过 URL 下载图像并使用 AnimationDrawable 类以间隔更改图像