我之前已经测试了它并且它已经完成了。现在错误又回来了,我的社交应用程序没有做任何更改。
以下是我的代码:
def get_profile(request, token=None):
args = {
'client_id': settings.FACEBOOK_APP_ID,
'client_secret': settings.FACEBOOK_APP_SECRET,
'redirect_uri': request.build_absolute_uri(reverse('social:fb_callback')),
'code': token,
}
target = urllib.urlopen('https://graph.facebook.com/oauth/access_token?' + urllib.urlencode(args)).read()
response = cgi.parse_qs(target)
access_token = response['access_token'][-1]
return access_token
答案 0 :(得分:1)
显然,您的请求未成功,且响应没有访问令牌。根据facebook文档,当请求不好时,它会返回一个带有错误元素的响应,如:
{
error: {
message: "Missing redirect_uri parameter.",
type: "OAuthException",
code: 191
}
}
因此,在您的函数中,您应该执行以下操作:
class FacebookAccessException(Exception): pass
def get_profile(request, token=None):
...
response = json.loads(urllib_response)
if 'error' in response:
raise FacebookAccessException(response['error']['message'])
access_token = response['access_token'][-1]
return access_token
<强> PS:强>
尝试使用更好的urllib。你应该试试Requests。