2012-01-15 4 views
0

пересмотренного ВопросаНовый маркер доступа без редиректа авторизовать войти

Я понимаю, используя ответ на: $facebook->api('/me?access_token='.$access_token) определит, нужно ли вам новый маркер доступа. Так что мой вопрос ниже может быть упрощен следующим образом:

Если пользователь не приложения отменил авторизацию, есть ли способ FB утвержденных, чтобы получить новый маркер доступа без redirect to the auth log?


OLD ВОПРОС

Как указано в this question, Facebook (отсутствует) токенов доступа истекают по разным причинам. This solution предоставляется Facebook для повторной авторизации и захвата нового токена доступа к сети.

Однако это решение предположило, что я хочу следующее поведение:

  1. Перенаправления моих пользователей авторизовать диалог
  2. Если они не отменили авторизацию моего приложения, я автоматически получить новый маркер доступ
  3. Если они отменили мое приложение, они получат диалоговое окно auth для повторного авторизации.

Однако

  • Если пользователь не моего приложения отменил авторизацию, я хотел бы новый маркер доступа.
  • Если у пользователя есть, я делаю не хочу диалоговое окно auth (или новый токен доступа).
  • В идеале, это может быть сделано в PHP, без редиректов авторизовать диалоговые

ответ

0

Если приложение разрешено пользователем, вы можете получить новый маркер доступа с этим JavaScript:

FB.getLoginStatus(function(response) { 
     if (response.status === 'connected') { 
      user_id = response.authResponse.userID; 
      access_token = response.authResponse.accessToken; 
     } 
    } 

Это не будет запрашивать у пользователя перенаправление на журнал авторизации. Простые материалы, задокументированные в Facebook getLoginStatus.

Это, конечно же, не сработает, если пользователь не зашел в Facebook, не одобрил ваше приложение и не посетил вашу страницу (для моих целей это предположение было прекрасным). Но вы можете запросить разрешение offline_access и сохранить новый ключ доступа для последующего использования, конечно.

Мой вопрос в идеале: это будет обрабатываться на стороне сервера. К сожалению, поведение этого PHP:

$access_token = $facebook->getAccessToken();

не идентичен лексем ответа доступа порожденного Javascript SDK. See this question.

Смежные вопросы