2013-05-24 2 views
4

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

Как способ проверить это, я создал тестовую утилиту, которая описывает процесс OAST нашего приложения и ответы, полученные от Facebook ,

  1. Go здесь: Buffer Facebook OAuth Test utility
  2. Войти с пользователем тест facebook:

    username: [email protected] 
        password: thisisabadpassword 
    
  3. Обзор поток OAuth.

В качестве эталона, это выход мы получаем для этой утилиты: http://cl.ly/image/0U273e163o2o

К сожалению, ответ от Facebook касательно наших отчетов не был столь же полезен, как мы надеялись.

Reported issue with test utility

Reported issue where solution did not resolve the issue

Related Issue

Любое понимание здесь было бы весьма признателен :).

+0

AFAIK вам нужно обменять только получили acces_token против так называемый «долгоживущий маркера». Мы делаем это в любом случае и сразу все время получаем токен доступа от FB. Раньше мы рассматривали подобные проблемы. https://developers.facebook.com/roadmap/offline-access-removal/ –

+0

забыть мой комментарий, я видел со скриншотов, которые вы уже делаете. Хорошо. Недавно у нас была 500-серверная ошибка на этой конечной точке в течение нескольких дней, поэтому я думаю, что они все еще занимаются этим? –

+0

Вы пытались выполнить шаги, описанные в [этом сообщении об ошибке] (https://developers.facebook.com/bugs/572944616072765) –

ответ

0

У нас были схожие проблемы, но в использовании их API javascript. В некоторых случаях токен доступа действует странно. (Длится всего несколько секунд) Обходные мы в конечном итоге, используя это сделать бревенчатую в проверку состояния перед любым FB апите вызов, как:

FB.getLoginStatus(function (response) { 
    //do your thing 
} 

Я не знаю, как ваш бэкэнд код работать.

Основная идея - поддерживать текущую сессию facebook в реальном времени, даже если ваш токен доступа по-прежнему действителен. проверить свою новую конечную точку: https://developers.facebook.com/roadmap/offline-access-removal/#extend_token

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