我正在开发和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作为平台?
有没有解决方案?
答案 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