我正在尝试按照以下链接提供的说明在我的应用程序中集成Google plus登录: https://developers.google.com/+/quickstart/android#install-sdk
我完全遵循所有指示。当我在android-sdk中提供的真实设备上运行示例应用程序并单击signin
按钮时,它会显示An internal error occurred
我做错了什么?
答案 0 :(得分:87)
我遇到了这个问题,甚至在创建了10个不同的SHA
和包名称的客户端ID之后,它也无效......直到我发现你必须填写Consent screen
。
根据GoogleDevelopers控制台 -
每当您请求访问权限时,都会向用户显示同意屏幕 使用您的客户ID访问他们的私人数据。
答案 1 :(得分:31)
如果您未在API控制台项目中设置客户端ID的签名,或者您从keytool复制了错误的键值,则会发生这种情况。在步骤7,8,9和10的quick start guide步骤中记录了这样做。
答案 2 :(得分:16)
我通过删除PlusClient.Builder中的.setScopes("PLUS_LOGIN")
解决了问题。
答案 3 :(得分:10)
我的Android应用程序中出现了这个Toast消息错误:
An internal error occurred
<强>要点:强>
假设您在Android应用和Android API服务器之间配置协商时出错,授予您访问权限。很可能是由于您未添加正确的软件包名称或正确的SHA1指纹造成的。我按照这些步骤吹出错误的配置并正确执行。
要修复的步骤:
转到您的google api控制台并登录:https://code.google.com/apis/console
点击“API访问”标签。
点击按钮:“创建另一个客户端ID”。
选择:“已安装的应用程序”单选按钮。
选择:“Android”单选按钮。
输入显示上述错误的Android应用的包名称。您可以在PlusSampleActivity.java
代码文件的顶部找到它。对我来说,这是com.google.android.gms.samples.plus
获取SHA1指纹值:
一个。使用命令keytool -list -v -keystore /home/el/.android/debug.keystore
。输入密码,如果您从未设置密码,则默认密码为“android”。
湾SHA1指纹显示在屏幕上,复制即可。
将上述值粘贴到“签名证书指纹(SHA1):”框中。
单击按钮:“创建客户端ID”。
再次运行您的Android应用程序,点击“登录”。
现在,您将看到“使用Google登录Google+ SDK”的活动。
答案 4 :(得分:4)
就我而言,解决方案是实际在同意屏幕中设置电子邮件地址。 首先,我有点不愿意选择我的个人地址,并且由于一个奇怪的原因,您可以保存表单而没有这些数据而没有错误。在检查了其他人的建议之后,只要我在该表单中设置了我的电子邮件地址,它就会开始工作。
答案 5 :(得分:3)
我一直在寻找如何解决这个问题,这一天充满了研究而没有运气,最终我成功了 使用以下方法解决此问题。
在我开始解决这个问题之前(至少我是如何工作的)我不得不说一切都在 文档是正确的,您不必更改任何代码行。 它看起来像 https://cloud.google.com/console 云控制台
中的更多错误首先确保您获得了正确的SHA1和项目的包名称,如文档中所述 的 https://developers.google.com/+/quickstart/android 强>
现在这个我注意到的错误(至少对我而言)就是在我的云控制台中,我创建的项目 很久以前,旧的界面和几个月前我迁移到新的GUI。一旦你在云控制台上看到新的外观,你会发现新项目有一个自动生成的项目ID 像这样 atlantean-ares-331 ,而旧项目的长整数值为项目ID ,这是不可见的。因此,如果您的项目是使用旧的GUI创建的,并且您刚刚为该项目创建了OAuth的新客户端ID,那么在尝试使用Google登录时,您将获得Toast“发生内部错误”。
如何修复
确保没有任何项目具有相同的包名称
您现在将使用的OAuth客户端ID,否则您将获得错误 This client ID is globally unique and is already in use
。(您必须删除旧的OAuth客户端ID,并使用您现在将使用的相同包名称)。
转到凭据为OAuth创建新的客户端ID。
已安装的应用程序
的Android
输入项目的包名称和SHA1
完成
答案 6 :(得分:2)
我对此问题的解决方案如下。
我做了其他人推荐的所有内容,并且没有关于包名称和SHA1密钥的拼写错误。我也尝试删除密钥,然后再添加它,但它没有帮助。
有什么帮助是删除密钥并创建新项目(在https://code.google.com/apis/console),然后再在那里创建客户端ID(包+ sha1)。在那之后(5秒),一切都在我的Android设备上运行。
答案 7 :(得分:1)
此问题与api控制台的权限有关。
如果您使用与SCOPE_PLUS_LOGIN相关的权限,则在api控制台中您必须创建两个密钥,一个用于OAuth客户端ID,另一个用于公共API密钥。
答案 8 :(得分:1)
在我的情况下,问题是我更改了应用程序的包名称,并且没有在开发控制台中更新。
答案 9 :(得分:0)
我转向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();
答案 10 :(得分:0)
感谢Thano的解决方案 “现在这个我注意到的错误(至少对我来说)是在我的云控制台中,我创建的项目很久以前就是使用旧界面,几个月前我迁移到了新的GUI。一旦你看到新的外观云控制台您会注意到新项目有一个自动生成的项目ID,如atlantean-ares-331,而旧项目得到一个长整数值作为项目ID,这是不可见的。所以,如果你的项目是用旧的GUI创建的,你有刚刚为该项目创建了OAuth的新客户端ID,您将在尝试使用Google登录时收到Toast“发生内部错误”。“
答案 11 :(得分:0)
在其他几次尝试之后,在Google控制台中重新创建项目对我有用:
出于任何原因,我的项目没有项目ID(旧控制台/新控制台?)。
正如Thano(上图)所建议的那样,我创建了一个全新的项目,创建了客户ID,然后才开始工作。谢谢你的建议!!
答案 12 :(得分:0)
对我而言,当我使用调试密钥安装时,我试图使用我的生产密钥。确保您使用右侧密钥库中的正确SHA1。
答案 13 :(得分:0)
请记住使用内置的调试密钥库进行测试。我让其他所有工作正常,但我在开发人员控制台的凭据中设置了生产密钥库SHA1指纹,导致它无法正常工作。
答案 14 :(得分:0)
如果您在尝试运行示例应用程序&#34;或&#34;时遇到此错误复制您在其他成功运行的计算机中创建的项目,并在您尝试运行的其他计算机中发出此类弹出错误,您可以按照以下方法进行操作,这将有所帮助。
如果您正在构建用于测试/调试目的的应用程序,那么
1.如果您复制项目并在其他计算机上运行它以获取为密钥库提供的软件包名称和路径,则生成新的SHA1。
2.在开发人员控制台中更改ClientId以获取新生成的SHA1,并在已复制项目并尝试运行它的新计算机中运行它。
答案 15 :(得分:0)
经常被忽视的是包名。我想在上面澄清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" >
在此示例中,在创建客户端ID
时定义“com.ntk.darkmoor”答案 16 :(得分:0)
当我使用SHA1 for debug.keystore进行debuging然后导出我的应用程序忘记为我用于导出应用程序的密钥库生成SHA1时,我遇到了同样的问题。
答案 17 :(得分:-1)
当我连接设备并从Android Studio安装apk时,它为我工作。 但是当我生成.apk并从dropbox安装它时,它现在正在为我工作。
答案 18 :(得分:-1)
我完成了这里提供的所有答案以及其他答案。就我而言,问题也是SHA-1。我得到错误的SHA-1的原因是我的keytool export cert命令。
以前我在使用
C:\Users\mysuername\.android SHA 1 signature keytool -exportcert -alias androiddebugkey -keystore "keystorepath" -list -v
问题出在androiddebugkey变量中。在这里,您必须提供用于签署应用程序的密钥的名称。
C:\Users\mysuername\.android SHA 1 signature keytool -exportcert -alias mykeyname -keystore "keystorepath" -list -v
希望这有助于某人!
答案 19 :(得分:-1)
要添加这个长长的原因列表,我的问题是我从jks文件而不是app获得了debugkey。
它总是很小。