Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.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
使用python或Django的Facebook API Auth 2_Python_Django_Facebook_Facebook Graph Api_Python Requests - Fatal编程技术网

使用python或Django的Facebook API Auth 2

使用python或Django的Facebook API Auth 2,python,django,facebook,facebook-graph-api,python-requests,Python,Django,Facebook,Facebook Graph Api,Python Requests,我正在尝试使用FacebookOAuth2API获取用户令牌,但在重定向url调用时遇到此错误 位于/data/FacebookAuth的不安全传输错误/ (传输不安全)OAuth 2必须使用https。 我已经运行了ngrok&https设置,但我不明白为什么它会给我这个错误 这是我在django中获取此令牌的代码 #Facebook App Credentials client_id = 'xxxx' client_secret = 'xxxxx' # OAuth endpoints gi

我正在尝试使用FacebookOAuth2API获取用户令牌,但在重定向url调用时遇到此错误

位于/data/FacebookAuth的不安全传输错误/ (传输不安全)OAuth 2必须使用https。

我已经运行了ngrok&https设置,但我不明白为什么它会给我这个错误

这是我在django中获取此令牌的代码

#Facebook App Credentials
client_id = 'xxxx'
client_secret = 'xxxxx'

# OAuth endpoints given in the Facebook API documentation> 

authorization_base_url = 'https://www.facebook.com/dialog/oauth'
token_url = 'https://graph.facebook.com/oauth/access_token'
redirect_uri = 'https://ab207c1f.ngrok.io/data/FacebookAuthRedirect' 

facebook = OAuth2Session(client_id, redirect_uri=redirect_uri)
facebook = facebook_compliance_fix(facebook)

#Getting Facebook Authentication
def FacebookAuth(request): 
    authorization_url, state = facebook.authorization_url(authorization_base_url)   
    redirect(authorization_url)

#Getting Facebook Authentication Redirect

def FacebookAuthRedirect(request):
    redirect_response = request.GET.get('code', '')
    token = facebook.fetch_token(token_url, client_secret=client_secret,
                   authorization_response=redirect_response)   
    print(token)
    return HttpResponse('ibrahim')

挖了一点以后。我找到了一个适合我的解决方案

这是因为
authorization\u code=request.build\u absolute\u uri()
。我试着打印它,它包含了“http”,而不是“https”。我使用以下代码将字符串替换为https。
redirect\u response=redirect\u response.replace(“http://”、“https://”)