我在从 Facebook 获取我正在尝试编写的 Django 应用程序的访问令牌时遇到问题。我的视图设置如下。
from django.http import HttpResponse, HttpResponseRedirect
from django.template import Context, loader
import urllib, json, sys
APP_ID = 'DDDDDDDDDDDDDDD'
APP_SECRET = 'SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS'
MY_URL = 'http://pckandap.com'
def fbauth(request):
template = loader.get_template('fbauth.html')
code = request.GET.get('code')
if code is None:
redirect_url = 'https://www.facebook.com/dialog/oauth?client_id='+APP_ID+'&redirect_uri='+MY_URL+'&state=pk1&scope=user_likes'
return HttpResponseRedirect(redirect_url)
else:
access_token = urllib.urlopen('https://graph.facebook.com/oauth/access_token?client_id='+APP_ID+'&redirect_uri='+MY_URL+'&client_secret='+APP_SECRET+'&code='+code)
context = Context({
'code_url' : 'https://www.facebook.com/dialog/oauth?client_id='+APP_ID+'&redirect_uri=http://test.com'+'&state=pk1&scope=user_likes',
'token_url' : 'https://graph.facebook.com/oauth/access_token?client_id='+APP_ID+'&redirect_uri='+MY_URL+'&client_secret='+APP_SECRET+'&code='+code,
'access_token' : access_token.read()
})
return HttpResponse(template.render(context))
在我的转储这三个变量的模板中,我得到以下内容:
code_url :
令牌地址 :
访问令牌: {"error":{"message":"验证验证码时出错。请确保您的redirect_uri与您在OAuth对话框请求中使用的相同","type":"OAuthException","code":100} }
发现redirect_uri 需要尾部斜杠。现在可以使用以下内容。
from django.http import HttpResponse, HttpResponseRedirect
from django.template import Context, loader
import urllib, json, sys, cgi
APP_ID = 'DDDDDDDDDDDDDDD'
APP_SECRET = 'SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS'
MY_URL = 'http://pckandap.com/'
def fbauth(request):
code = request.GET.get('code')
if code is None:
args = dict(client_id=APP_ID, redirect_uri=MY_URL, scope="user_likes,friends_likes")
redirect_url = "https://graph.facebook.com/oauth/authorize?" + urllib.urlencode(args)
return HttpResponseRedirect(redirect_url)
else:
args = dict(client_id=APP_ID, redirect_uri=MY_URL)
args["client_secret"] = APP_SECRET
args["code"] = code
token_url = "https://graph.facebook.com/oauth/access_token?"+urllib.urlencode(args)
request.session['access_token'] = urllib.urlopen(token_url).read()[13:-1]
return HttpResponseRedirect('/dash/likes')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)