2014-05-01 3 views
0

Мне было интересно, как я могу проверить, подключен ли пользователь к facebook на стороне сервера, если соединение происходит с Android APP.Android - Facebook Connect, Check server side

В самом деле, на моем сайте я могу легко проверить, что в 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; 
} 

Но когда я называю URL в моей Android App, я не сдам этот шаг и Я получаю ответ JSON {'status' => 'failed', 'error' => 'facebook_not_authentificated', 'url' => '...' }

Любая идея?

Благодаря

+0

просмотрен 7 раз, а не ключ? : s – Maxime

ответ

1

Если кто-то нужен ответ я, наконец, узнал после многих часов исследований ...

Вы должны передать маркер (маркер, который вы получите в андроид приложение), на сервер и указать серверу использовать:

$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()); 
        } 
       } 
      }); 
     } 
    } 
}); 
1

Если вы хотите проверить, если пользователь по-прежнему проверку подлинности на устройстве, вы должны использовать Facebook Android SDK на устройстве, а не использовать на стороне сервера.

С другой стороны, вы можете отправить маркер, полученный от Facebook, и отправить его на свой сервер и проверить, дает ли он вам Facebook User.

+0

Меня действительно интересует «вы можете отправить токен, который вы получили от Facebook, и отправить его на свой сервер и проверить, дает ли он пользователю Facebook». это именно то, что мне нужно. Но как я могу это сделать? Thx для вашего ответа! – Maxime

+0

В вашем ответе нет необходимости делать запрос. Когда пользователь регистрируется с помощью Facebook, токен предоставляется вам в этом обратном вызове. – tasomaniac