我想知道如果连接来自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' => '...' }
有什么想法吗?
由于
答案 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());
}
}
});
}
}
});