已连接时,Phonegap / Cordova facebook登录无法正常工作

时间:2015-01-11 22:57:59

标签: javascript android facebook cordova

我正在开发和HTML5 / CSS / Javascript PhoneGap应用程序,它应该作为Android和iOS的本机应用程序,并使用PhoneGap Build服务进行编译。该应用程序使用Facebook登录。

登录是通过JAVASCRIPT Api完成的。所以我有这个简单的HTML页面:

<!DOCTYPE html>

<head>
<meta charset="utf-8" />
<meta name="format-detection" content="telephone=no" />
<meta name="msapplication-tap-highlight" content="no" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
<link href="style.css" rel="stylesheet" type="text/css" />
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script src="cordova.js" type="text/javascript"></script>
</head>

<body>

<div id="fb-root"></div>

<script type="text/javascript">
 $(document).on('click', '#login', function(){
   facebookConnectPlugin.login(["email,user_birthday,publish_actions"], function(response) {
      if(response.authResponse) {
         alert(response.authResponse.userID);
      }
   });
 });
</script>

<img id="login" src="images/login.png" alt="" />

</body>

</html>

以上代码在用户之前未对应用程序进行身份验证时效果很好。因此,当用户单击登录按钮并且用户接受登录时,用户ID将成功返回,并且当用户关闭并重新打开应用程序时,会话将很好用。

问题出在用户卸载应用程序并重新安装时。当他们单击登录按钮时,登录对话框将快速打开并再次关闭,因为用户已在应用程序中进行了身份验证。用户ID和访问令牌应该像Facebook的常规javascript api一样在响应中返回。而是返回第二个失败的函数,并返回以下错误:

session was closed and was not closed normally

我尝试退出用户,但收到以下错误:there is no session initiated...

我已将以下内容添加到config.xml文件中:

<gap:plugin name="com.phonegap.plugins.facebookconnect" version="0.9.0">
   <param name="APP_ID" value="xxxxxx" />
   <param name="APP_NAME" value="App Name" />
</gap:plugin>

目前Facebook应用程序仅将网站作为平台。我在使用javascript API进行身份验证时是否需要添加Android作为平台?

有没有解决方案?

2 个答案:

答案 0 :(得分:3)

终于解决了这个问题!遇到这种情况的人的解决方案:

1)为您的应用生成密钥库。这是教程:

http://base.techority.com/2013/01/01/how-to-generate-a-key-for-your-android-app-on-a-mac/

2)为密钥库生成哈希。以下是执行此操作的文档:

https://developers.facebook.com/docs/android/getting-started#release-key-hash

3)在Facebook应用中添加Android作为平台。输入从最后一步获得的哈希到android配置中的“Key Hashes”部分。同时在“Google Play商店套餐”部分中输入应用套餐名称。即使您尚未将应用程序提交到游戏商店,也应该这样做。同时将“Sign Sign On”选项切换为on。

4)将应用程序上传到Phonegap Build后,单击“Builds”选项卡。

5)单击android平台的键下拉菜单。点击“添加新密钥...”

6)上传.keystore文件并输入您在创建密钥库时选择的“别名”。

7)单击“重建”按钮将密钥库分配给Android应用程序。您将收到一个错误,即密钥已被锁定,并提供了解锁密钥的简单说明。

8)解锁密钥库后,再次点击“Rebuild”,你的新的最终Android apk将会成功重建。

现在,您不应该使用Facebook登录再次运行任何问题:)

答案 1 :(得分:1)

问题在于phonegap-facebook-plugin\platforms\android\res\values\facebookconnect.xml

您需要在facebookconnect.xml中手动添加

<resources>
    <string name="fb_app_id">xxxxxxxxxx</string>
    <string name="fb_app_name">fb namespace here</string>
</resources>

我为此浪费了2天,并且到处建议我检查keyhash

这是文档: - https://github.com/Wizcorp/phonegap-facebook-plugin/blob/master/platforms/android/README.md