整合Google Plus登入资讯后发生「内部错误」

我正在尝试按照以下链接提供的说明将Google pluslogin整合到我的应用程序中: https : //developers.google.com/+/quickstart/android#install-sdk

我完全按照所有的说明。 当我在android-sdk提供的真实设备上运行示例应用程序并单击signinbutton时,它会显示Toast消息,表示An internal error occurred

我究竟做错了什么?

如果您尚未在API控制台项目中为客户端ID设置签名,或者您从keytool复制了错误的键值,则可能会发生这种情况。 这样做是在步骤7,8,9和10的快速入门指南的步骤中logging。

我有这个问题,甚至创build了10个不同的SHA和包名称不同的客户端ID后,它不起作用…直到我发现你必须填写Consent screen

根据GoogleDevelopers控制台 –

每当您请求使用您的客户端ID访问其私人数据时,将向用户显示同意屏幕。

同意画面

我已经通过删除.setScopes("PLUS_LOGIN")来解决问题。

我在我的android应用程序中得到这个toast消息错误:

 An internal error occurred 

概要:

假设您在configurationAndroid应用程序和授予您访问权限的Android API服务器之间的协商时犯了错误。 很可能是由于您未添加正确的软件包名称或正确的SHA1指纹造成的。 我遵循这些步骤来吹出错误的configuration,并做对了。

步骤来解决:

  1. 转到您的谷歌API的控制台和login: https : //code.google.com/apis/console

  2. 点击“API访问”标签。

  3. 点击button:“创build另一个客户端ID”。

  4. select:“已安装的应用程序”单选button。

  5. select:“Android”单选button。

  6. input显示上述错误的android应用程序的包名称。 您可以在PlusSampleActivity.java代码文件的顶部find它。 对我来说,它是com.google.android.gms.samples.plus

  7. 获取您的SHA1指纹值:

    一个。 使用命令keytool -list -v -keystore /home/el/.android/debug.keystore 。 input密码,如果您从未设置密码,则默认密码为“android”。

    湾 屏幕上显示SHA1指纹,复制该指纹。

  8. 将上面的值粘贴到“签名证书指纹(SHA1):”框中。

  9. 点击button:“创build客户端ID”。

  10. 再次运行你的android应用程序,点击“login”。

现在您将看到一个活动“用Googlelogin到Google+ SDK”。

就我而言,解决scheme是在“同意”屏幕中实际设置一个电子邮件地址。 首先,我有点不情愿select我的个人地址,并且出于一个奇怪的原因,您可以保存没有错误的数据。 在检查了其他人的build议后,只要我以这种forms设置我的电子邮件地址,它就开始工作。

我一直在寻找如何解决这一整天的研究没有运气最后我设法解决这个问题,采用以下方法。

在我开始解决这个问题之前(至less是如何为我工作的)我不得不说,文档上的所有内容都是正确的,你不必修改任何代码行。 它看起来更像是https://cloud.google.com/console云端控制台中的一个错误

首先确保您获得了正确的SHA1和项目的包名称,如文档https://developers.google.com/+/quickstart/android

现在,我注意到(至less对我来说)这个错误是,在我的云控制台,我创build的项目很久以前,与旧的界面,几个月前,我已经迁移到新的GUI.Once你在云上的新面貌控制台,你会注意到新项目有一个像这样的atlantean-ares-331自动生成的项目标识符,而旧的项目有一个长整型值作为项目ID 不可见 。 因此,如果您的项目是使用旧的GUI创build的,并且您刚刚为该项目创build了OAuth的新客户端ID,则您将在尝试使用Google帐户login时收到Toast“发生内部错误”。

怎么修

  1. 转到您的云端控制台
  2. 做一个新的项目,我会build议像oldprojectname-gplus这样的名字
  3. 在API部分启用Google+ API
  4. 确保您的项目没有任何 OAuth客户端ID上的软件包名称与您现在使用的软件包名称相同,否则您将收到错误 This client ID is globally unique and is already in use (您将必须删除旧的OAuth客户端ID与现在使用的包名称相同)。

  5. 转到凭据为OAuth创build新的客户端ID。

已安装的应用程序

Android的

input您的项目的包名称和您的SHA1

完成

我对这个问题的解决scheme如下。

我做了别人推荐的所有内容,而且包名和SHA1键没有错别字。 我也尝试删除密钥,然后再次添加,但没有帮助。

有帮助的是删除密钥并创build一个项目(在https://code.google.com/apis/console ),然后在那里创build客户端ID(包+ sha1)。 之后(5秒),一切工作在我的Android设备上。

此问题与来自api控制台的权限有关。

如果您正在使用与SCOPE_PLUS_LOGIN相关的权限,则必须在api控制台中创build两个密钥,一个用于OAuth客户端ID,另一个用于公用API密钥。

在我的情况下,问题是我改变了应用程序的包名称,并没有在开发控制台更新。

对我来说,这是我正在试图使用我的生产密钥时,使用我的debugging密钥安装。 确保从右边的密钥库中使用正确的SHA1。

我转向了Google IO 2013,并更改了PlusClient的初始化,然后运行。

 public static final String AUTH_SCOPES[] = { Scopes.PLUS_LOGIN, "https://www.googleapis.com/auth/userinfo.email", "https://www.googleapis.com/auth/developerssite" }; mPlusClient = new PlusClient.Builder(this, this, this) .setScopes(AUTH_SCOPES) .build(); 

感谢Thano的解决scheme“现在,我注意到(至less对我来说)这个错误是在我的云控制台,我创build的项目很久以前与旧的界面和几个月前我迁移到新的GUI.Once你在云控制台上获得新的外观,你会注意到新的项目有一个像这样的自动生成的项目标识atlantean-ares-331,而旧的项目得到一个长整型值作为项目ID,这是不可见的所以,如果您的项目创build旧的graphics用户界面,你刚刚为该项目的OAuth创build新的客户端ID,你会得到吐司“一个内部错误发生”,同时尝试login谷歌。

在其他几次尝试之后,在Google控制台中重新创build项目对我很有帮助:

出于任何原因,我的项目没有项目ID(旧控制台/新控制台?)。

正如Thano(上面)所build议的,我创build了一个全新的项目,创build了客户ID,然后开始工作。 感谢您的build议!!

请记住使用内置debugging密钥库进行testing。 我有一切正常工作,但我已经在开发人员控制台的凭据中设置我的生产密钥库SHA1指纹,导致它不起作用。

如果您在尝试运行示例应用程序时遇到此错误“或者”将您在其中正在成功运行的其他机器中创build的项目复制到另一台正在运行的机器上,并popup错误消息,你可以按照下面的方法,这将有所帮助。

如果您正在构build用于testing/debugging目的的应用程序,

1.如果复制项目并在其他计算机上运行提供给密钥库的包名称和path,则生成新的SHA1。

2.在开发人员控制台中更改新生成的SHA1的ClientId,并在复制项目并尝试运行的新计算机上运行。

一些经常被忽视的东西是包名。 我想澄清上面的Eric Leschinski的第6步(不能在这里注释):所需的软件包不是活动的包,而是应用程序清单的包。

您可以从AndroidManifest.xml的根元素中检索正确的值:

 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.ntk.darkmoor" android:versionCode="1" android:versionName="1.0" > 

在这个例子中,在创build客户端ID时定义“com.ntk.darkmoor”

当我使用SHA1进行debug.keystore进行debugging时,遇到同样的问题,然后导出应用程序忘记为用于导出我的应用程序的keystore生成SHA1。

它为我工作时,我连接设备,并从Android Studio安装apk。 但是它现在为我工作,当我生成.apk并从保险箱安装它。

我经历了这里和其他人提供的所有答案。 在我的情况下,问题也是SHA-1。 我得到不正确的SHA-1的原因是我的keytool export cert命令。

以前我在用

 C:\Users\mysuername\.android SHA 1 signature keytool -exportcert -alias androiddebugkey -keystore "keystorepath" -list -v 

问题出在androiddebugkeyvariables中。 在这里你必须给出用于签名应用程序的密钥的名称。

 C:\Users\mysuername\.android SHA 1 signature keytool -exportcert -alias mykeyname -keystore "keystorepath" -list -v 

希望这可以帮助别人!

要添加到这个长长的原因列表,我的问题是,我从jks文件,而不是应用程序debugging密钥。

它总是很小。