我在这里使用示例应用程序ibm.com/developerworks/library/x-androidfacebookapi/ 测试facebook android SDK, 我已在此示例应用中提供了我的APP ID。 我已经完成了所有设置和先决条件。 我已经使用我的密钥库签署了应用程序并生成了哈希密钥 我向Facebook应用设置页面提交了哈希密钥, 我在我的设备上安装了facebook app。 但毕竟做应用程序给Facebook错误invalid_key。 请帮助我解决这个问题, 谢谢。
答案 0 :(得分:10)
无效密钥可能有多种原因 -
当我最初获得Invalid Key时,那是因为我提供了错误的Alias。奇怪的是,Keytool和OpenSSl不会提到别名是错误的。如果你给命令生成哈希密钥,并且它没有要求你输入密码,那么你可能做错了。
答案 1 :(得分:9)
经过几天相同问题的挣扎,我在这里写了一个问题的完整解释和各种修复:
http://sean.lyn.ch/2011/07/android-the-facebook-sdk-sso-and-you/
答案 2 :(得分:3)
在我开始工作之前遇到的一些事情:
1)在linux中生成哈希。 Windows(至少对我来说,64位)没有生成正确的哈希。下载Cygwin bash shell并从那里开始。
2)在密钥库的文件路径中,一切都应该是正斜杠。即使在C:前面。因此,例如,C:/Users/YourName/.android/debug.keystore,而不是C:\ Users / YourName / .android / debug.keystore。
3)应包括散列末尾的等号。也许这对某些人来说是显而易见的,但我认为我应该提到它。
它应该提示您输入密码。如果没有,你做错了。
答案 3 :(得分:2)
我也有这个问题,没有真正找到解决方法,直到我找到了这个
每个帮助主题都指出密钥哈希尚未正确填写。多次检查并多次使用keytool后,我知道我已经正确填写了它。上面的链接对这个问题的满意度有所了解,并且那里提供的溶剂对我有用。只需将您在弹出窗口中看到的密钥复制到Facebook开发人员页面上的哈希框中即可。它可以与从keytool获得的哈希一起添加。
我在解决这个问题时发现了一些事情。 - 我总是使用keytool命令中的完整路径 - 输入keytool命令时,请确保它要求输入密码 - 要确定您是否在de keytool命令中正确输入了密码,请首先提供一些您知道不是的密码,因为密码会导致密码生成哈希值。如果密码不正确,它将始终提供相同的哈希值。因此,要检查您输入的密码是否正确,请将其与错误密码的哈希进行比较。 - 只有当facebook应用程序也在手机上时才会出现此错误,我认为这意味着该错误不在身份验证中,这使我在代码中搜索错误数小时而没有(至少没有认证部分:p) - 我很幸运拥有多个测试设备,这表明我在代码中没有错误,但在sdk或认证阶段的其他部分出现错误。
我希望这些信息可以帮助遇到这个问题的人,并节省他一些时间来解决它。
亲切的问候汤姆答案 4 :(得分:1)
整天都遇到问题,我使用cmd提示符生成密钥,并且在我在windows系统设置中定义了openssl和keytool的路径之后它才有效。
我在eclipse中设置了Facebook应用程序,它在AVD上工作正常,但是当我的nexus安装时,同样的程序会导致Facebook错误无效密钥。
我得出结论,设备有自己的密钥,不能在密钥库中使用它们。
答案 5 :(得分:0)
这不是逻辑bu“相同”keytool命令在Windows和Linux中提供不同的结果。从Linux工作得到的哈希密钥,从Windows失败。你可以试试!
Windows中的openssl从此处安装:http://code.google.com/p/openssl-for-windows/
答案 6 :(得分:0)
我遇到了同样的问题,最后我找到了解决方案:对Windows用户使用Cygwin。 Windows的结果与linux / iOS不同。 所以安装Cygwin,这很容易,如果你想使用NDK,你还需要cygwin。 运行上面列出的命令复制输出,它将起作用。
答案 7 :(得分:0)
实际上这是facebook sdk中的问题,如果卸载com.facebook.katana,那么你的应用程序将完全正常工作。我没有针对此问题的永久解决方案,但暂时可以正常使用
答案 8 :(得分:0)
今天,使用Cygwin的Windows EVEN无法获得正确的密钥。您必须在MacOS或Linux下执行此操作。这是一个问题。希望他们很快得到解决。
答案 9 :(得分:0)
我遇到了同样的问题,我认为很多其他人都遇到了和我一样的问题。 Windows上的密钥存储区默认位于用户目录下,例如C:\ Users \ User Name.android \
它失败了,因为我正在进入完整路径,并且在用户命名的文件夹中有一个空格(“”)。如果您在路径周围添加引号,它可能会起作用,并且系统会提示您输入密钥库密码。
e.g。 keytool -exportcert -alias androiddebugkey -keystore“C:\ Users \ User Name.android”| openssl sha1 -binary | openssl base64
答案 10 :(得分:0)
我正在使用Windows 7并使用以下方法解决问题:
keytool -export -alias androiddebugkey -keystore "[PATH]\debug.keystore" -storepass android -keypass android | openssl sha1 -binary | openssl enc -a -e
您可以下载OpenSSL for Windows
答案 11 :(得分:0)
我修复了这个错误:
如果您添加授权行此代码
Facebook.FORCE_DIALOG_AUTH
mFacebook.authorize(MundialRugby2011Activity.this,
new String[] {"publish_stream", "read_stream",
"offline_access"},Facebook.FORCE_DIALOG_AUTH, new LoginDialogListener());