2012-05-06 3 views
56

Как я понял, недавно Facebook решил удалить разрешение offline_access и ввел понятие, называемое долгоживущими токенами доступа, которое длится максимум 60 дней. Есть ли кто-нибудь, кто знает, как получить этот токен доступа с помощью JavaScript JavaScript SDK?Получите длинный токен доступа token от Facebook

ответ

102

Существует способ продлить это до 60 дней. Описанные здесь: https://developers.facebook.com/docs/roadmap/completed-changes/offline-access-removal/ под Scenario 4: Client-side OAuth and Extending Access_Token Expiration Time through New Endpoint

Edit: Для того, чтобы расширить маркер доступа, вам необходимо сделать следующий запрос с вашим короткоживущим маркером доступа:

https://graph.facebook.com/oauth/access_token?    
    client_id=APP_ID& 
    client_secret=APP_SECRET& 
    grant_type=fb_exchange_token& 
    fb_exchange_token=EXISTING_ACCESS_TOKEN 
+1

Нужно ли мне обменивать текущий токен доступа, чтобы получить новый токен доступа, когда мой текущий срок истекает каждый раз после 60 дней. Теперь, когда я передаю offline_access как параметр scop, похоже, он не рассматривает его, и просто мой токен доступа проверяется в течение нескольких часов. Можете ли вы объяснить, как получить длинный токен доступа через facebook JavaScript sdk. Существуют ли какие-либо настройки или специальные параметры, которые мне нужно отправить вместе. –

+0

Автономный доступ устарел, поэтому не пытайтесь его использовать. Я отредактировал свой ответ. –

+0

Спасибо, Янь. Таким образом, мы можем обновить наше существование пользователя access_token в новый длинный live-доступ. Это нормально. Но все же я понятия не имею, как я могу получить новый access_token с 60 временем истечения срока действия с помощью facebook js sdk. Есть ли у них какой-либо особый параметр или конфигурация, связанные с этим. –

12

Из-за ошибки в Facebook, некоторые пользователям придется неавторизовать приложение до того, как Facebook выдает долгоживущие токены.

+11

Подтверждено. Через 7 часов ударившись головой о экран, я удалил приложение из своей учетной записи, и был возвращен долгожданный токен. – Costa

+4

это шутка, не так ли? – seb

+2

эта ошибка еще не решена? – Enrique

0

Добавить функцию в javascript со следующими данными: я надеюсь, что это работает для вас.

function getLongLiveToken(data){ 

     FB.api('oauth/access_token', { 
      client_id: data.client_id, // FB_APP_ID 
      client_secret: data.secret, // FB_APP_SECRET 
      grant_type: 'fb_exchange_token', 
      fb_exchange_token: data.access_token // USER_TOKEN 
     }, function (res) { 
      if(!res || res.error) { 
       console.log(!res ? 'error occurred' : res.error); 
      }else{ 
       var accessToken = res.access_token; 
       if(typeof accessToken != 'undefined'){ 
       } 
      } 
     }); 
    } 
+0

Не выполняйте вызов с клиентской стороны, отправляйте короткий токен на сервер и используйте что-то подобное в бэкэнде, так как он содержит секрет приложения. – meain

+0

Можете ли вы сказать !!! Какой из языков программирования вы предпочитаете для этого. – ankur

+1

Используйте все, что вы используете в бэкэнд, я лично использую python. – meain

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