Python: Facebook API показывает неверный токен
я используюAPI-интерфейс facepy facebook graph чтобы получить доступ к моему почтовому ящику / сообщениям, и я следовал следующие два подхода:
1st Approach:
Я использовалaccess token
Я получил отGraph Explorer
Facebook страницу и используйте следующий код:
from facepy import GraphAPI
graph = GraphAPI(token)
print graph.get('/me')
#Rest of the code
Приведенный выше код работал нормально, и я смог получить все свои сообщения, используяFQL Query
, Проблема возникла, когда мой auth_tokenexpired
через некоторое время.
Итак, после некоторого поиска в Google я перешел кapproach two:
Теперь то, что я сделал, было создано приложение для Facebookread_mailbox
разрешение и получил егоid and key
а затем использовалget_application_access_token метод facepy для получения токена.
После получения токена я использовал:
token = facepy.utils.get_application_access_token(app_id, key)
graph.get('/me')
## OUT: OAuthError: [2500] An active access token must be used to query information about the current user.
facepy.utils.get_extended_access_token(token, app_id, key)
# OUT: OAuthError: [1] No user access token specified
Теперь вы можете увидеть ошибку (commented #
) генерируется при использовании токена приложения.
Я считаю, что ошибка, которую я получаю, в том, что Facebook нуждается вuser_token
и я снабжаю егоapp_token
.
Итак, возможно ли получить доступ к данным пользователя с помощью app_token, и если нет, то как можно выдатьextended token
который может получить доступ к данным пользователя.
Update:
Итак, я последовал предложению @Johannes и попробовал это, но натолкнулся на ошибку:
from facepy.utils import get_extended_access_token
from facepy import GraphAPI
token = "My user access token got from https://developers.facebook.com/tools/explorer"
long_lived_access_token = get_extended_access_token(token)
graph = GraphAPI(long_lived_access_token)
graph.get('/me')
Теперь, когда я запустил приведенный выше код, я получил
TypeError: get_extended_access_token() takes exactly 3 arguments (1 given)
Итак, я изменил его наlong_lived_access_token = get_extended_access_token(token, None, None)
и получил
facepy.exceptions.OAuthError
Итак, я снова изменил его наlong_lived_access_token = get_extended_access_token(token, app_id, key)
и я получил то же исключение / ошибку, что и выше.
Итак, это ошибка или я делаю что-то не так.
PS: я установил последнюю версию из git.