PhoneGap 3.3使用Phonegap Facebook Connect插件,getLoginStatus总是返回未知

时间:2014-02-17 05:43:25

标签: facebook cordova phonegap-plugins phonegap-build

我试图通过PhoneGap构建实现Phonegap Facebook Connect插件,FB.getLoginStatus总是返回"未知"即使我已登录Facebook并已授予访问我的应用程序的权限。这是我的代码:

JAVASCRIPT代码:

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady()
{

FB.init
({
    appId: 'XXXXX',
    status: true, // check login status
    cookie: true, // enable cookies to allow the server to access the session
    xfbml: false,  // parse XFBML
    oauth : true ,// enable OAuth 2.0           
    useCachedDialogs: false,
    nativeInterface : CDV.FB
});             

FB.getLoginStatus(function (response)
{
    alert('FB.getLoginStatus');

    if (response.status === 'connected')
    {
        alert('DUDE: connected to facebook');
    }
    else if (response.status === 'not_authorized')
    {
        alert('DUDE: not authorized for facebook');
    }
    else
    {
        alert('DUDE: not logged in to facebook: ' + response.status);
    }           
}, true);

        }

CONFIG.XML:

<gap:plugin name="com.phonegap.plugins.facebookconnect">
    <param name="APP_ID" value="XXXXXXX" />
    <param name="APP_NAME" value="APP NAME" />
</gap:plugin>

为什么facebook auth状态未知?感谢。

2 个答案:

答案 0 :(得分:0)

您需要在Facebook Connect plugin中查看“Facebook要求和设置”

Android中的
如果您计划在Android上推出此功能,请注意您需要生成Android密钥哈希并将其提交到Facebook上的开发者页面以使其正常运行即可。此外,如果您在Windows(特别是64位版本)上生成此哈希,请使用版本0.9.8e或0.9.8d的OpenSSL for Windows而不是0.9.8k。对于fernandomatos的大肆宣传!

<小时/> 步骤细节:
1.生成一个哈希键How to create Android Facebook Key Hash?
2.在Facebook应用设置面板(设置)上插入您的哈希键(添加Android平台并插入Key Hashes)
3.转到帐户&gt;编辑设置&gt;在Adobe phonegap build中签署密钥标签然后点击“添加密钥...”上传您的密钥库文件以制作Android buuiding密钥
4.选择你的android密钥在phonegap build中构建应用程序。

参考链接:
login + logout + login = fail #1

答案 1 :(得分:0)

这对我有用,使用插件和示例

https://github.com/Wizcorp/phonegap-facebook-plugin/blob/a5c6be9/README.md

您无法继续使用Cookie并需要自行传递访问令牌。

以下是您需要做的事情:

1)客户端(请注意,我使用的是旧版本的插件,其中FB js已修补,而不是新功能):

将用户ID和accesstoken传递给服务器:

FB.login(function(response) {
    if (response.authResponse) {
        // Use userID on authResponse because FB.getUserID() works in the browser but return null on device 
        var userId =  response.authResponse.userID;

        // Or use FB.getAccessToken()
        var accessToken = response.authResponse.accessToken;

        //use userId and accessToken to pass to the server (form or ajax call)
    }
}

2)服务器端(php)

//Get the accessToken from the request
$accessToken = $_REQUEST['accessToken'];
$facebook = new Facebook(array(
      'appId'  => '<YOUR APP ID>',
      'secret' => '<YOUR APP SECRET>'
    ));
$facebook->setAccessToken($accessToken);
//Now you have the right session setup and can call Graph API
$fbUser = $facebook->api('/me')