我按照以下步骤进行了此链接
我将google-services.json下载到我的app文件夹中.
我的项目级gradle文件:
dependencies { classpath 'com.android.tools.build:gradle:1.3.0' classpath 'com.google.gms:google-services:1.5.0-beta2' }
我的应用级gradle文件:
apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile 'com.google.android.gms:play-services-identity:8.3.0' compile 'com.google.android.gms:play-services:8.3.0' compile 'com.google.android.gms:play-services-plus:8.3.0' compile 'com.google.android.gms:play-services-auth:8.3.0' ... }
我为后端服务器创建了OAuth 2.0客户端ID,并将此客户端ID传递给strings.xml文件.
最后我创建了GoogleSignInOptions和GoogleApiClient对象,如下所示:
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestEmail() .requestIdToken(getString(R.string.server_client_id)) .build(); mGoogleApiClient = new GoogleApiClient.Builder(this) .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */) .addApi(Auth.GOOGLE_SIGN_IN_API, gso) .build();
但问题是result.isSuccess()总是在handleSignInResult函数中返回false.我想也许我在第1步或第2步错误地做某事.我的代码几乎与此SignInActivity.java类似.任何帮助,将不胜感激.
BNK.. 40
正如我在以下问题中所回答的那样:
Google登录requestIdToken返回null
为了成功请求Id令牌,您应该使用"Web应用程序"类型的客户端ID,而不是"Android"类型的客户端ID.
您还可以在Google的文档中找到以下信息(请注意#3):
为后端服务器创建OAuth 2.0客户端ID
如果您的应用使用后端服务器进行身份验证或从后端服务器访问Google API,则必须为服务器创建OAuth 2.0客户端ID.要创建OAuth 2.0客户端ID:
打开"凭据"页面.
单击添加凭据> OAuth 2.0客户端ID.
选择Web应用程序.
单击"创建"
在创建GoogleSignInOptions对象时,将此客户端ID传递给requestIdToken或 requestServerAuthCode方法.
3月26日更新:
Android开发人员博客 - 为Google登录注册OAuth客户端
yubaraj poud.. 19
在我的情况下,我以前,
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestEmail() .build();
我通过添加添加requestToken方法来修复它,
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestEmail() .requestIdToken(getString(R.string.default_web_client_id)) .build();
现在它为我工作.希望这可以帮助有人像我这样的问题.
正如我在以下问题中所回答的那样:
Google登录requestIdToken返回null
为了成功请求Id令牌,您应该使用"Web应用程序"类型的客户端ID,而不是"Android"类型的客户端ID.
您还可以在Google的文档中找到以下信息(请注意#3):
为后端服务器创建OAuth 2.0客户端ID
如果您的应用使用后端服务器进行身份验证或从后端服务器访问Google API,则必须为服务器创建OAuth 2.0客户端ID.要创建OAuth 2.0客户端ID:
打开"凭据"页面.
单击添加凭据> OAuth 2.0客户端ID.
选择Web应用程序.
单击"创建"
在创建GoogleSignInOptions对象时,将此客户端ID传递给requestIdToken或 requestServerAuthCode方法.
3月26日更新:
Android开发人员博客 - 为Google登录注册OAuth客户端
在我的情况下,我以前,
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestEmail() .build();
我通过添加添加requestToken方法来修复它,
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestEmail() .requestIdToken(getString(R.string.default_web_client_id)) .build();
现在它为我工作.希望这可以帮助有人像我这样的问题.