Android - Facebook Connect,检查服务器端

时间:2014-05-01 12:56:04

标签: android facebook-graph-api

我想知道如果连接来自Android APP,我如何检查用户是否连接到服务器端的facebook。

事实上,在我的网站上,当请求来自浏览器时,我可以在PHP中轻松检查:

// Try to get the user's id on Facebook
$userId = $this->facebook->getUser();

// If user is not yet authenticated, the id will be zero
if($userId == 0){
    // Generate a login url
    $data['url'] = $this->facebook->getLoginUrl(array('scope'=>'email'));
    $response = array('status' => 'failed', 'error' => 'facebook_not_authentificated', 'url' => $data['url']);

    $data = json_encode($response);

    echo $data;
    return 0;
}

但是当我在我的Android应用程序中调用url时,我没有通过此步骤而是获得JSON响应{'status' => 'failed', 'error' => 'facebook_not_authentificated', 'url' => '...' }

有什么想法吗?

由于

2 个答案:

答案 0 :(得分:1)

如果要检查用户是否仍在设备中进行身份验证,则应在设备上使用Facebook Android SDK,而不是使用服务器端。

另一方面,您可以发送从Facebook获得的令牌并将其发送到您的服务器,并检查它是否为您提供了Facebook User

答案 1 :(得分:1)

如果有人需要答案,经过数小时的研究后我终于找到了答案......

你必须将令牌(你进入Android应用程序的令牌)传递给服务器并告诉服务器使用它:

$facebook->setAccessToken($access_token);

要在您的应用中找到令牌:

Session.openActiveSession(InscriptionConnexionActivity.this, true, new Session.StatusCallback() {

    // callback when session changes state
    @Override
    public void call(final Session session, SessionState state, Exception exception) {
        if (session.isOpened()) {

            // make request to the /me API
            Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {

                // callback after Graph API response with user object
                @Override
                public void onCompleted(GraphUser user, Response response) {
                    if (user != null) {
                        System.out.println(user.getName() + " : connected");
                        $my_token = session.getAccessToken());
                    }
                }
            });
        }
    }
});