我已在我的应用中设置并成功使用了Firebase动态链接。我现在正在尝试将Firebase邀请包含在同一个应用中。我已按照此处的设置指南Firebase Invites setup guide进行操作。它可以显示选择电子邮件地址(或短信的单元格编号)的选择器,但是当我按下发送红色小吃栏时会出现消息,“消息无法发送”,onActivityResult()方法返回resultCode 3。
我已经查看了stackoverflow上的所有类似问题,但无法解决问题。
我在应用see my stackoverflow question here中设置动态链接时确实遇到了SHA-1的问题,但问题已解决且动态链接工作正常。
我很感激任何帮助让邀请工作。谢谢。
答案 0 :(得分: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项目窗口中,我选择了我的应用程序>任务> android> signingReport(双击signingReport运行并显示SHA-1在屏幕底部的“运行”窗口中)。我注意到这个SHA-1与我从签名调试apk获得的SHA-1不同。
然后我将这个SHA-1指纹添加到firebase控制台中的应用程序(所以我现在将此调试SHA-1和发布apk SHA-1添加到firebase控制台中的应用程序)。邀请现在有效!
答案 1 :(得分:1)
对于遇到此问题的其他人,某些Google Play服务需要使用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 androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore
获取调试证书指纹:
Category
keytool实用程序会提示您输入密钥库的密码。 debug keystore的默认密码是android。然后keytool将指纹打印到终端
答案 2 :(得分:1)
我意识到这是旧的,但我遇到了同样的问题。有趣的是,我得到错误3,无法发送7天前。我通过生成新的SHA1和SHA256指纹“替换Firebase中的指纹”并使用最新的google-services.json文件来“修复”它。
我能够发送邀请,直到昨天它再次突然开始返回错误3。现在,3套钥匙和2把头发后来,它仍然无法正常工作。我在Play商店里有一个Alpha版本;它使用相同的apk我的设备正在运行。我很茫然,我甚至将我的本地存储库转回到我工作当天的承诺。 Nadda ....