Xamarin生成的调试facebook登录密钥哈希与终端生成的密钥哈希

时间:2018-05-18 19:05:11

标签: visual-studio xamarin xamarin.forms facebook-login android-package-managers

首先,引用史蒂夫乔布斯:

  

“我很难过,不是微软的成功 - 我没有问题   他们的成功。 (...)我有一个问题,他们只是   制作真正的三流产品。“

JK。现在我们走吧。我刚刚在公司里交了一个Xamarin项目,我对这个框架没有任何经验,所以我觉得有人可以在某些方面启发我。

我正在尝试在物理设备中以调试模式执行Facebook登录,但我无法使哈希键工作。它抛出了好的''无效的密钥哈希。密钥哈希xxxxxxxxx与任何存储的ky哈希都不匹配等等......“错误。

我已经在Android Studio中多次这样做了,它似乎总是很直接。我在我的AndroidManifest.xml中设置了我的appId,并在Facebook上为开发仪表板添加了哈希。现在我正在关注关于哈希的Facebook教程,但无论我做什么,我生成的密钥哈希总是与我设备中显示的哈希不同。

我在使用Visual Studio for Mac 7.5的Mac中。首先,我尝试使用~/.android/debug.keystore生成哈希,但没有成功。在进一步研究中,我发现Xamarin实际上使用位于~/.local/share/Xamarin/Mono for Android/debug.keystore的另一个debug.keystore,也是同样的错误。我注意到的另一个奇怪的事情是,如果我使用不同的密码,它会给我不同的哈希值。

再多搜索一下,我发现generate the keys programmatically有一种方法可以使用类PackageManager但是,因为我在Xamarin中,所以我很难搞清楚它。我找不到Xamarin等同于PackageManager.GET_SIGNATURES。

现在提出问题:

  1. 为什么我的设备哈希值与我在Mac上生成的哈希值不同?从Facebook的文档中我了解到,如果用于创建哈希和构建我的应用程序的密钥库文件是相同的,则哈希键应该是相同的。

    • 也许我使用的是错误的密码?如果是这样,我该如何更改或找到正确的?

    • 也许Visual Studio正在使用我不知道的第三个密钥库?如果是这样,我如何找出正在使用的密钥库文件?

  2. 如何让PackageManager类在Xamarin中运行?我正在看他们的docs,但我真的无法理解。

  3. 谢谢!

    修改

    我确实使用了错误的密码。对我有用的是使用位于~/.local/share/Xamarin/Mono for Android/debug.keystore的密钥库,密码为android

1 个答案:

答案 0 :(得分:1)

您可以在official doc中找到有关Visual Studio在Mac和Windows上使用的默认(调试)密钥库的详细信息。您可以在 keytool 命令示例中查看别名和密码。

您是否正在为具有发布版本的设备构建应用?这可以解释正在使用的不同密钥库文件,具体取决于项目配置。我过去看到的,当我尝试为Facebook生成哈希并且它不起作用时,实际上是在提示时输入了错误的密码。如果您按照Facebook说明进行操作,则基本上将几个命令组合在一起,然后对输出进行哈希处理。该进程的输出实际上可能是“无效密码”,然后你就是base64哈希,并且起初可能看起来像一个有效的哈希,但事实并非如此。