Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
facebook django应用程序oauth中的重定向_uri错误_Django_Facebook_Oauth - Fatal编程技术网

facebook django应用程序oauth中的重定向_uri错误

facebook django应用程序oauth中的重定向_uri错误,django,facebook,oauth,Django,Facebook,Oauth,我在Facebook上为我正在编写的Django应用程序获取访问令牌时遇到问题。我有一个如下设置的视图 from django.http import HttpResponse, HttpResponseRedirect from django.template import Context, loader import urllib, json, sys APP_ID = 'DDDDDDDDDDDDDDD' APP_SECRET = 'SSSSSSSSSSSSSSSSSSSSSSSSSSSS

我在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))
在转储这三个变量的模板中,我得到了以下内容:
编码url
令牌\u url

访问\u令牌:{“错误”:{“消息”:“验证验证代码时出错。请确保您的重定向\u uri与您在OAuth对话框请求中使用的相同”,“键入”:“OAuthException”,“code”:100}

您可以使用现有模块()登录facebook吗

如果没有,我将首先更改
If
循环的逻辑,因为它无法打开。将其更改为:

code = request.GET.get('code', None)

if code is not None:
    access_token = urllib.urlopen...
else:
    redirect_url = ...

上下文['code\u url']
中,您有
重定向\u uri=http://test.com
,是否应该用其他内容替换?

发现重定向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')

facebook auth也有类似问题,你真的发布了完整的客户id和客户机密吗?!