Django allauth 获取凭据以代表用户发出进一步请求

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

我正在开发一个需要 BitBucket 用户身份验证的 Django 项目,我设置了 allauth 以便用户可以使用 Bitbucket 进行身份验证,我只是不明白如何向 Bitbucket 发出进一步的请求 API 现在用户已通过身份验证。

我知道 allauth 纯粹是为了身份验证的目的,没有关于如何访问和进一步使用身份验证的文档,在这种情况下访问凭据 (oauth_token) 这样我就可以代表资源所有者的进一步请求。

我找到了身份验证详细信息以提出进一步的请求。

工作流程

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

将凭据与请求一起使用 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)

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()