使用Google API和token [Django & AllAuth]

q43xntqr  于 2023-08-08  发布在  Go
关注(0)|答案(1)|浏览(132)

我在我的Django应用程序上使用AllAuth来管理用户身份验证。有了这个,我的用户可以连接他们的谷歌帐户,我得到一个谷歌API令牌(具有适当的范围)。
我想使用该令牌访问Google API(在我的情况下是Calendar v3),因为我的用户已经使用OAuth2登录我的网站,并允许我访问日历API。
谷歌只在他们的网站上给出了完整的过程(从认证到API),有没有一种方法来构建我的想法,或者根本不可能?
我已经尝试了drive = build('calendar', 'v3', credentials=credentials)作为所说的here,但“凭据”需要是oauth2client的一部分,而不仅仅是一个简单的字符串令牌。
谢谢你的宝贵时间。
西蒙

dfddblmv

dfddblmv1#

我知道这是一个老问题,但我终于找到了适合我的东西。在使用allauth成功进行身份验证之后,我这样做是为了获得客户端令牌,然后构建服务。

from googleapiclient.discovery import build
    from google.oauth2.credentials import Credentials
    from allauth.socialaccount.models import SocialToken, SocialApp

    ...    

    # request is the HttpRequest object
    token = SocialToken.objects.get(account__user=request.user, account__provider='google')

    credentials = Credentials(
        token=token.token,
        refresh_token=token.token_secret,
        token_uri='https://oauth2.googleapis.com/token',
        client_id='client-id', # replace with yours 
        client_secret='client-secret') # replace with yours 

    service = build('calendar', 'v3', credentials=credentials)

字符串
确保SOCIALACCOUNT_STORE_TOKENS = Truehttps://django-allauth.readthedocs.io/en/latest/configuration.html一样,否则您将不会有任何SocialToken对象。

相关问题