我正在使用facepy facebook graph API来访问我的邮箱/消息,我遵循以下两种方法:
第一种方法:
我使用access token
了从Graph Explorer
facebook 页面获得的并使用以下代码:
from facepy import GraphAPI
graph = GraphAPI(token)
print graph.get('/me')
#Rest of the code
上面的代码运行良好,我能够使用FQL Query
. 一段时间后我的 auth_token 出现了问题expired
。
所以,经过一番谷歌搜索后,我转向接近两个:
现在,我所做的是创建了一个 facebook 应用程序授予它read_mailbox
权限并获得它id and key
,然后使用facepy的 get_application_access_token 方法来获取令牌。
检索我使用的令牌后:
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 #
使用应用程序令牌时生成的 error()。
我相信我得到的错误是因为 facebook 需要user_token
并且我正在为其提供app_token
.
那么,是否可以使用 app_token 访问用户数据,如果不能,如何发布一个extended token
可以访问用户数据的文件。
更新:
所以,我按照@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 安装了最新版本。