ibrahim_Ramzan
ibrahim_Ramzan

Reputation: 51

Facebook API Auth 2 with python or Django

I am trying ti get user Token using Facebook oauth2 api but i am facing this error when redirect url call.

InsecureTransportError at /data/FacebookAuth/ (insecure_transport) OAuth 2 MUST utilize https.

I have running ngrok & https setup but i can't figure out why it is giving me this error

Here is my code to get this token in 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')

Upvotes: 2

Views: 508

Answers (1)

ibrahim_Ramzan
ibrahim_Ramzan

Reputation: 51

After digging a bit. I found a solution that worked for me.

it was because of authorization_code = request.build_absolute_uri(). I tried printing it and it contained "http" instead of "https". I replaced the string with https using the following code. redirect_response = redirect_response.replace("http://", "https://")

Upvotes: 1

Related Questions