gpt4 book ai didi

python - 如何在 Django 中以编程方式生成 AccessToken?

转载 作者:太空狗 更新时间:2023-10-29 18:30:44 30 4
gpt4 key购买 nike

我正在设置 API。一切正常。我正在通过 OAuth2 python 库创建一个 token 。我正在为我的 API 使用 TastyPie。

我面临的问题是 AccessToken 或 Client 模型中没有“创建” token 方法。

我可以通过 Django 管理员创建一个 accessToken,我可以通过 curl 来创建一个:

myhost.com/oauth2/access_token(包含所有信息、 key 、客户端 ID、用户和密码)

我的目标是在使用我的 API 成功注册用户后,自动创建(工作)oAuth 客户端,但我还想生成 AccessToken。我不能 cURL 我自己的服务器,因为它给我一个重定向/连接被拒绝的错误,所以我想在 Python 中以编程方式进行。无论如何要这样做?这是一个片段:

try:
user = User.objects.create_user(username, password)
user.save()

if user:
oauth_client = Client(user=user, name="api account", client_type=1, url="http://example.com")
oauth_client.save()

oauth_client_id = oauth_client.pk
oauth_client_secret = oauth_client.client_secret

if oauth_client:
print user
print oauth_client_id
print AccessToken.objects.all()
print '........'
token = AccessToken(user=user, client=oauth_client_id, scope=6)
token.save()

上面的最后两行,虽然没有给出任何错误……但不会保存新的 AccessToken。

最佳答案

我正在使用 https://github.com/caffeinehit/django-oauth2-provider .我设法使用模型创建了访问 token 和刷新 token 。我可能会绕过拨款流程。我没有在生产中使用过这段代码,但在开发服务器中我可以使用以这种方式生成的访问 token 来执行 API 调用。我认为在投入生产之前应该对其进行良好的测试。

#settings.py
OAUTH2_PROVIDER = {
# this is the list of available scopes
'SCOPES': {'read': 'Read scope'},
'ACCESS_TOKEN_EXPIRE_SECONDS': 36000,
}

#views.py
expire_seconds = oauth2_settings.user_settings['ACCESS_TOKEN_EXPIRE_SECONDS']
scopes = oauth2_settings.user_settings['SCOPES']

application = Application.objects.get(name="ApplicationName")
expires = datetime.now() + timedelta(seconds=expire_seconds)
access_token = AccessToken.objects.create(
user=user,
application=application,
token=random_token_generator(request),
expires=expires,
scope=scopes)

refresh_token = RefreshToken.objects.create(
user=user,
token=random_token_generator(request),
access_token=access_token,
application=application)

token = {
'access_token': access_token.token,
'token_type': 'Bearer',
'expires_in': expire_seconds,
'refresh_token': refresh_token.token,
'scope': scopes}

return Response(token, status=200)

关于python - 如何在 Django 中以编程方式生成 AccessToken?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17868049/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com