Unity Android应用程序上的Facebook API,登录称它“被播放器取消”?

时间:2014-01-05 17:46:51

标签: android facebook unity3d

我正在尝试按照这个例子:

https://developers.facebook.com/docs/unity/getting-started/android/

我正在使用Unity 4.3.1f1

使用ADT:adt-bundle-windows-x86_64-20131030

使用Facebook API版本4.3.6进行统一。

我已正确地遵循了示例,我在developers.facebook.com上创建了应用程序,并使用了与项目相同的显示名称和命名空间。我还使用统一内的Facebook设置给我的值到适当的位置(包名,类名和密钥哈希),api给我的密钥哈希正确地放在facebook页面上并使用命令:

"keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Rafael\.android\debug.keystore" | openssl sha1 -binary | openssl base64"

也会给我相同的密钥哈希,所以我相信一切都好。

构建apk时,我正确选择了debug.keystore并输入正确的密码。

当运行InteractiveConsole演示时,按下Init工作正常,但在按下Login后会询问权限,我按OK并且登录不起作用,它表示播放器已取消 ,登录根本不起作用,不告诉我为什么,任何想法?

2 个答案:

答案 0 :(得分:1)

所以回答我自己的问题,结果是关键哈希是错误的,我修改了facebook API文件AndroidFacebook.cs,并通过更改此方法记录了它正在使用的任何密钥哈希:

public void OnLoginComplete(string message) 
{ 
   ... 
   if (parameters.ContainsKey("key_hash")) 
   { 
       keyHash = (string)parameters["key_hash"]; 
       Debug.Log("proper keyhash : " + keyHash); 
   } 
   ... 
 }

记录的keyhash与其他方法给我的不同,包括API自己的通知密钥,我在facebook页面添加了正确的密钥,现在一切正常。

答案 1 :(得分:0)

我的解决方案是:

  1. 获取指纹SHA1(keytool -printcert -file CERT.RSA)
  2. 复制SHA1 HEX并将该代码转换为Base 64(http://tomeko.net/online_tools/hex_to_base64.php
  3. 您应该在Facebook应用配置的Android密钥哈希值中复制base 64中的指纹。
  4. 这就是全部而且完美无缺!