Django allauth get credentials to make further requests on behalf of the user

天涯浪子 提交于 2019-12-06 12:31:22

I found the authentication details to make a further requests.

Workflow

from allauth.socialaccount.models import SocialAccount, SocialApp

bitbucket_app = SocialApp.objects.get(provider='bitbucket')
user_account = SocialAccount.objects.get(user=request.user)
# User should only have one SocialToken object per SocialApp
# https://github.com/pennersr/django-allauth/blob/master/allauth/socialaccount/models.py#L137
user_token = useraccount.socialtoken_set.first()

# Credentials to make further requests
client_key = bitbucket_app.client_id
client_secret = bitbucket_app.secret
resource_owner_key = user_token.token
resource_owner_secret = user_token.token_secret

Using credentials with requests and requests_oauthlib

import requests
from requests_oathlib import OAuth1
auth = OAuth1(client_key, client_secret, resource_owner_key, resource_owner_secret)
r = requests.get(protected_url, auth=auth)

An example with the bitbucket-api

https://bitbucket-api.readthedocs.org/en/latest/index.html

from bitbucket.bitbucket import Bitbucket
bb = Bitbucket(user_account.uid)  # Initialise with bitbucket username
bb.authorize(client_key, client_secret, 'http://localhost', resource_owner_key, resource_owner_secret)
# Get user repositories as an example
bb.repository.all()
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!