2016-08-13 69 views
1

我已经在我的应用中设置并成功使用了Firebase动态链接。我现在正在尝试在同一个应用中加入Firebase邀请函。我按照这里的设置指南Firebase Invites setup guide。它的工作原理与选择电子邮件地址(或短信号码)的选择器一样,但当我按下发送红色快餐栏时出现消息,“消息未能发送”,onActivityResult()方法返回resultCode 3.Firebase邀请“消息未能发送”

我已经看过所有类似的问题,在stackoverflow但尚未能够解决这个问题。

我在设置应用程序see my stackoverflow question here中的动态链接时遇到了SHA-1的问题,但已解决并且动态链接完美工作。

我很感激任何帮助让Invites工作。谢谢。

回答

2

解决了这个问题。这全是关于SHA-1的。

最初我为调试版本生成了一个已签名的apk。然后我使用keytool为此版本提取SHA-1,并将其添加到Firebase控制台中的应用程序。我的动态链接在这种情况下工作正常,但邀请不会导致“消息发送失败”错误。

看着类似的问题,在stackoverflow我注意到,SHA可能是问题。一些人建议在Firebase控制台中包含调试版和发行版SHA-1。所以我生成了一个签名版本的apk并提取了SHA-1,只是意识到它与调试SHA-1相同。

然后我尝试了另一种从调试版本中提取SHA-1的方法。 1)(在Android Studio中)我打开了Gradle项目屏幕(右侧边栏),2)然后在gradle项目窗口中,我选择了我的应用> Tasks> android> signingReport(双击signingReport运行并显示SHA-1在屏幕底部的运行窗口中)。我注意到这个SHA-1不同于我从签名的调试apk获得的SHA-1。

然后,我将这个SHA-1指纹添加到firebase控制台中的应用程序(所以我现在已经在Firebase控制台中将此调试SHA-1和发行版apk SHA-1添加到应用程序中)。邀请现在的作品!

1

对于有这个问题的其他人,SHA-1密钥是必需的谷歌播放服务。邀请是需要密钥的服务之一。这真的没有直接在应用程序邀请我可以找到的文档中说明,但它在后面的链接中很清楚。以下文字取自:https://developers.google.com/android/guides/client-auth

某些Google Play服务(例如Google登录和应用邀请)要求您提供签名证书的SHA-1,以便我们可以创建OAuth2客户端和API密钥你的应用。要获得您的SHA-1,请按照以下说明操作:

打开终端并运行Java提供的keytool实用程序以获取证书的SHA-1指纹。您应该同时获得发行版和调试证书指纹。

要获得发布证书指纹:

keytool -exportcert -list -v \ 
-alias <your-key-name> -keystore <path-to-production-keystore> 

要获得调试证书指纹:

keytool -exportcert -list -v \ 
-alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore 

keytool实用程序会提示您输入密钥库输入密码。调试密钥库的默认密码是android。 keytool然后打印指纹到终端

0

我意识到这是旧的,但我有同样的问题。有趣的是,我得到错误3,7天前无法发送。我通过生成新的SHA1和SHA256指纹,替换Firebase中的指纹,并使用最新的google-services.json文件来“修复”它。

我能够发送邀请,直到昨天突然又开始返回错误3。现在,3套钥匙和2把头发后,它仍然没有工作。我在Play商店有一个Alpha版本;它使用的是我的设备正在运行的相同的apk。我无所适从,我甚至把我的本地存储库重新提交给我在它工作的那一天做出的承诺。 Nadda ....