Articles of google authentication

com.google.android.gms.auth.GoogleAuthException:getToken(未知来源)exception

在我的Android应用程序中,我正试图在我的谷歌应用引擎后端服务器上validation谷歌令牌。 但我总是得到这个例外: com.google.android.gms.auth.GoogleAuthException: getToken(Unknown Source) exception 我的代码: private Account mAccount = AccountManager.get(this).getAccountsByType(GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE)[0]; private static final String SCOPE = “audience:server:client_id:” +Constants.WED_CLIENT_ID; String token = GoogleAuthUtil.getToken(LoginActivity.this, mAccount.name, SCOPE); 我已经尝试了Stackoverflow中提出的每个解决方案。

Google登录失败com.google.android.gms.common.api.ApiException:10:

所以我陷入了这个令人沮丧的问题。 我对Firebase上的Google Auth很新,但是我完成了firebase文档指示如何集成Google SignIn Auth的所有内容,但我仍然在控制台中收到这个奇怪的错误,包括两部分: 12-03 11:07:40.090 2574-3478/com.google.android.gms E/TokenRequestor: You have wrong OAuth2 related configurations, please check. Detailed error: UNREGISTERED_ON_API_CONSOLE 并且 Google sign in failed com.google.android.gms.common.api.ApiException: 10: 在任何人试图指出之前已经在堆栈溢出问题上提出的类似问题之前,这是我在看到所有可用解决方案之后到目前为止所做的事情,但是还没有解决错误 我的项目有SHA1指纹 我有我的OAuth 2.0客户端ID,android客户端ID和Web客户端,在requestIdToken()中我已经放了web客户端ID 。 我没有在Google Play商店发布我的项目APK。 这意味着我没有意外生成另一个SHA1指纹。 我一步一步地按照Google登录Auth firebase文档进行操作。 这是我的代码片段: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_signup); ButterKnife.bind(this); String webClientId = getString(R.string.web_client_id); GoogleSignInOptions gso = new […]

无声登录以使用GoogleApiClient检索令牌

我在我的应用中使用“Google登录”。 因此,我使用GoogleApiClient类来获取用户电子邮件和我后端所需的ID令牌。 当用户登录时,我可以访问一个Activity(当然),我使用该Activity让GoogleApiClient通过调用builder.enableAutoManage(myActivity,…)来处理UI生命周期的事情。 这很好用。 但是,在稍后阶段(几天后),我需要获得一个新令牌(出于某种原因,我不会在这里进一步讨论)。 我希望在没有用户交互的情况下静默获取此令牌。 但是,在我需要这个新令牌的代码中,我无法访问任何Activity实例。 这意味着我无法进行上述调用,即“builder.enableAutoManage”。 而且我发现,如果我不打那个电话,那么静默登录似乎不起作用。 我附上了以下代码。 现在,看看“silentLogin”方法。 只要我作为用户收到的令牌执行了实际登录,小于一小时,则语句“pendingResult.isDone”将返回true并且可以接收缓存的令牌。 但是,如果我作为用户收到的令牌执行了实际登录,则超过一小时,则调用“pendingResult.setResultCallback”,但是“onResult”方法永远不会被调用,我无法获得新的令牌。 如果我从一个活动中做同样的事情(并且通过调用“builder.enableAutoManage”)也不会发生这个问题。 那么,有没有人知道我做错了什么,更重要的是 – 如何解决这个问题并获得一个新的令牌而无需访问活动实例? 我使用的是com.google.android.gms:play-services-auth:8.4.0 package com.google.samples.quickstart.signin; import android.content.Context; import android.os.Bundle; import android.util.Log; import com.google.android.gms.auth.api.Auth; import com.google.android.gms.auth.api.signin.GoogleSignInAccount; import com.google.android.gms.auth.api.signin.GoogleSignInOptions; import com.google.android.gms.auth.api.signin.GoogleSignInResult; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.Scopes; import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.common.api.OptionalPendingResult; import com.google.android.gms.common.api.ResultCallback; import com.google.android.gms.common.api.Scope; /** * Use this class to login with google […]

android GoogleAuthUtil.getTokenWithNotification Intent回调未触发

我有一个后台服务调用GoogleAuthUtl.getTokenWithNotification并且它正常工作,但我正在尝试实现此function的回调部分,但是无法正常工作。 我已经实现了一个广播接收器并将其添加到清单中,我的应用程序中也有一个活动。 以下是相关的代码段。 GoogleAuthUtil.getTokenWithNotification GoogleAuthUtil.getTokenWithNotification(this.getContext(), account, “oauth2:” + GmailScopes.GMAIL_SEND, null, new Intent(AuthReceiver.AUTH_INTENT)); AuthReceiver public class AuthReceiver extends BroadcastReceiver { public final static String AUTH_INTENT = “com.testoauth.AUTH_INTENT”; public AuthReceiver() { } @Override public void onReceive(Context context, Intent intent) { Log.d(“RECEIVER”, “Received Auth broadcast.”); NotificationManager notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.cancelAll(); } } AndroidManifest 我不知道为什么它没有收到广播。 我没有在日志中看到任何exception,也没有指示接收器被调用,在调试时它甚至不会在断点处中断。 我做错了什么吗? 编辑 我正在使用min […]

首先使用Facebook进行身份validation然后使用Google导致Firebase for Android出现错误

据我在Firebase文档中了解,如果用户使用凭据对其帐户进行身份validation,则如果凭据尚未与其他凭据相关联,则应使用相同的凭据严格登录。 换句话说,如果我使用Google登录创建帐户,然后(退出后)尝试使用与Google凭据相同的电子邮件登录Facebook凭据,我应该在logcat中看到此exception: “已存在具有相同电子邮件地址但登录凭据不同的帐户。请使用与此电子邮件地址关联的提供商登录。” 是的,我毫不奇怪地得到了这个例外。 但是,如果我使用Facebook创建帐户,然后尝试使用Google凭据登录,则此帐户(Facebook)的提供商将转换为Google。 这次validation不会失败,但不是预期的结果。 我希望以某种方式将每个用户与特定凭据相关联。 我该怎么解决这个问题? 你可以看到下面的代码: public class SignInActivity extends AppCompatActivity implements GoogleApiClient.OnConnectionFailedListener, View.OnClickListener { private static final String TAG = “SignInActivity”; private static final int RC_SIGN_IN = 9001; private GoogleApiClient mGoogleApiClient; private FirebaseAuth mFirebaseAuth; private FirebaseAuth.AuthStateListener mFirebaseAuthListener; private CallbackManager mCallbackManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sign_in); // Facebook Login […]

Google使用Firebase登录Android – statusCode DEVELOPER_ERROR

我尝试在我的Firebase连接Android应用中实施Google登录。 当我运行应用程序并按下Google登录按钮时 – 没有任何反应。 我在onActivityResult中收到此错误: Status {statusCode = DEVELOPER_ERROR,resolution = null} 。 我的代码如下所示: protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_CODE_GOOGLE_LOGIN) { GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); if (result.isSuccess()){ GoogleSignInAccount account = result.getSignInAccount(); String emailAddres = account.getEmail(); getGoogleQAuthToken(emailAddres); } } } private void getGoogleQAuthToken(final String emailAddres){ AsyncTask task = new AsyncTask() […]

获取Google一次性授权码

我无法从Google获取一次性授权码。 我试图从Android客户端获取授权码,以便将其发送到我的Rails后端(Web客户端)。 在我的Google Cloud Developer Console中,我有一个包含两个客户端ID的应用程序: Web应用程序的客户端ID(用于我的rails后端) Android应用程序的客户端ID(用于我的Android客户端)。 使用的SHA1来自〜/ .android / debug.keystore 假设Web应用程序客户端ID是12345.apps.googleusercontent.com 假设Android客户端ID是67890.apps.googleusercontent.com 这是我的一些代码: private final static String WEB_CLIENT_ID = "12345.apps.googleusercontent.com"; private final static String GOOGLE_CALENDAR_API_SCOPE = "audience:server:client_id:" + WEB_CLIENT_ID; private void getAndUseAuthToken(final String email) { AsyncTask task = new AsyncTask<String, Void, String>() { @Override protected String doInBackground(String… emails) { try { return GoogleAuthUtil.getToken(AddExternalCalendarsActivity.this, […]

com.google.android.gms.auth.GoogleAuthException:未知

我正在尝试使用Oauth2来validationlogin到我的设备的谷歌用户。 我已经创build了客户端ID,但我无法获得预期的结果。 代码是: String mScope="oauth2:server:client_id:NNNNNNNNNNN.apps.googleusercontent.com:api_scope:https://www.googleapis.com/auth/plus.login"; protected Void doInBackground(String… accountName) { Log.i("Inside on AsynTask:","I am here"); String accName=accountName[0]; try { token1 = GoogleAuthUtil.getToken(Web_view_demo.this, accName, mScope); Log.i("Inside on AsynTask:","I am here"); } catch (IOException transientEx) { // Network or server error, try later Log.e("IO", transientEx.toString()); } catch (UserRecoverableAuthException e) { // Recover (with e.getIntent()) Log.e("UserRecover", e.toString()); //Intent […]

Android的GoogleAuthUtil.getTokenWithNotification意图callback不触发

我有一个后台服务,调用GoogleAuthUtl.getTokenWithNotification ,它工作正常,但我试图实现这个函数的callback部分,这是不正常工作。 我已经实现了一个广播接收器,并将其添加到清单,我也有一个在我的应用程序的活动。 以下是相关的代码片段。 GoogleAuthUtil.getTokenWithNotification GoogleAuthUtil.getTokenWithNotification(this.getContext(), account, "oauth2:" + GmailScopes.GMAIL_SEND, null, new Intent(AuthReceiver.AUTH_INTENT)); AuthReceiver public class AuthReceiver extends BroadcastReceiver { public final static String AUTH_INTENT = "com.testoauth.AUTH_INTENT"; public AuthReceiver() { } @Override public void onReceive(Context context, Intent intent) { Log.d("RECEIVER", "Received Auth broadcast."); NotificationManager notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.cancelAll(); } } AndroidManifest <receiver android:name=".AuthReceiver" android:enabled="true" android:exported="true"> […]