繁体   English   中英

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

[英]Facebook API on Unity Android app, login says it was “cancelled by the Player”?

我正在尝试遵循以下示例:

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,登录不起作用,它说它已被Player取消 ,登录根本不起作用,并且不执行此操作。告诉我为什么,有什么想法吗?

因此,回答我自己的问题后,发现密钥哈希是错误的,我修改了Facebook API文件AndroidFacebook.cs,并通过更改此方法使它记录了所使用的密钥哈希:

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

而且记录的密钥哈希与其他所有方法给我的(包括API自己的知悉密钥)不同,我在facebook页面上添加了正确的密钥,现在一切正常。

我的解决方案是:

  1. 获取指纹SHA1(keytool -printcert -file CERT.RSA)
  2. 复制SHA1十六进制并将该代码转换为Base 64( http://tomeko.net/online_tools/hex_to_base64.php
  3. 您应该在facebook应用程序配置的Android密钥哈希中的base 64中复制指纹。

仅此而已,效果非常好!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM