gpt4 book ai didi

python - 通过Python实现Oauth2.0授权refresh token(谷歌API服务创建)

转载 作者:行者123 更新时间:2023-12-04 03:29:03 24 4
gpt4 key购买 nike

我正在尝试使用 Oauth2 通过 headless Linux 服务器访问 Google API 服务。我通读了这篇文章的所有答案:How do I authorise an app (web or installed) without user intervention?但它们都没有展示如何使用刷新 token 在 python 中生成访问 token 。 pinnoyyid 有一个 javascript 示例 ( https://stackoverflow.com/a/19766913/15713034 ),它是这样的:

function get_access_token_using_saved_refresh_token() {
// from the oauth playgroundfunction get_access_token_using_saved_refresh_token() {
// from the oauth playground
const refresh_token = "1/0PvMAoF9GaJFqbNsLZQg-f9NXEljQclmRP4Gwfdo_0";
// from the API console
const client_id = "559798723558-amtjh114mvtpiqis80lkl3kdo4gfm5k.apps.googleusercontent.com";
// from the API console
const client_secret = "WnGC6KJ91H40mg6H9r1eF9L";
// from https://developers.google.com/identity/protocols/OAuth2WebServer#offline
const refresh_url = "https://www.googleapis.com/oauth2/v4/token";
let refresh_request = {
body:`grant_type=refresh_token&client_id=${encodeURIComponent(client_id)}&client_secret=${encodeURIComponent(client_secret)}& refresh_token=${encodeURIComponent(refresh_token)}`;,
method: "POST",
headers: new Headers({
'Content-Type': 'application/x-www-form-urlencoded'
})
}

JavaScript 并不是我最擅长的语言,但我可以破译他们正在向谷歌服务器发送 POST 请求。因此,我尝试使用 requests 包在 Python 中重新创建请求:

   import requests
result = requests.post("https://www.googleapis.com/oauth2/v4/token", body={'grant_type':'refresh-token', 'client_id':client_id, 'client_secret':client_secret, 'refresh_token': refresh_token}, headers={'Content-Type': 'application/x-www-form-urlencoded'})

当我查看结果时,它显示它有一个 200 状态代码(成功),但是当我尝试检查响应时,没有什么容易阅读的,我无法解析 JSON 中的结果以获取访问 token 。我尝试的另一种方法是使用 Google 建议的代码启动 Flask 服务器:https://developers.google.com/identity/protocols/oauth2/web-server#python_5但这也不起作用,因为当我尝试从无论如何都不会返回 JSON 的函数(包含访问代码的对象)之一返回凭据时。我更喜欢 post 请求方法,因为它更干净并且使用的代码更少。谢谢!

最佳答案

在 Python 中,一种方法是使用 requests-oauthlib执行后端应用程序流程。当您没有前端可以将某人重定向到以批准获取 token 时,这很有用。

关于python - 通过Python实现Oauth2.0授权refresh token(谷歌API服务创建),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67201485/

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