我正在使用Flask编写一个基本上是游戏RESTful服务器的Python应用程序。但是我在facebook-sdk上遇到了一些问题。
播放器在客户端游戏上使用Facebook登录并向我发送访问令牌。我正在提取用户数据和他们也玩游戏的朋友(在我的系统中建立友谊关系)。但是有一个问题,当我尝试抓取me/friends?fields=installed
时,它始终会让我facebook.GraphAPIError: An active access token must be used to query information about the current user.
如果我只是查询me/friends
,则返回正常。
如果我尝试直接从Graph API Explorer查询这些信息,它就可以正常工作了。但是当我去python repl时它会返回错误。我试过这个:
>>> graph = facebook.GraphAPI("[access-token]")
>>> graph.get_object("me/friends?fields=installed")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/vagrant/venv/local/lib/python2.7/site-packages/facebook.py", line 99, in get_object
return self.request(id, args)
File "/home/vagrant/venv/local/lib/python2.7/site-packages/facebook.py", line 298, in request
raise GraphAPIError(response)
facebook.GraphAPIError: An active access token must be used to query information about the current user.
我使用与资源管理器上完全相同的访问令牌。
我不应该在当前的app-key或其他地方声明?
感谢。
答案 0 :(得分:1)
是的,您应该使用app-secret
和app-id
来生成访问令牌。您将从中获取的访问令牌可以解决问题。您可以使用以下命令生成访问令牌(1):
GET /oauth/access_token?
client_id={app-id}
&client_secret={app-secret}
&grant_type=client_credentials
由于您使用的是Python,因此您可以简单地对上述URL发出get请求以获取访问令牌。这可以通过(2):
来完成import requests
r = requests.get('https://graph.facebook.com/oauth/access_token?
grant_type=client_credentials&client_id=123&client_secret=XXX')
access_token = r.text.split('=')[1]
print access_token
您甚至可以使用任何其他python库来发出此请求。
来源:
答案 1 :(得分:0)
您需要检查您在授权场景中包含的权限。我认为这说明令牌无效的原因。
查看此文档 https://developers.facebook.com/docs/facebook-login/permissions/v2.0 希望它有所帮助