xqdoo00o / ChatGPT-to-API

Scalable unofficial ChatGPT API for production.
648 stars 129 forks source link

请求支持 refresh_token to access_token #54

Closed baby9 closed 3 months ago

baby9 commented 3 months ago

通过refresh_token 生成 access_token

通过官网获取 https://auth0.openai.com/oauth/token 以下是python实现

import requests,json
url = "https://auth0.openai.com/oauth/token"
headers = {"Content-Type": "application/json"}
data = {
    "redirect_uri": "com.openai.chat://auth0.openai.com/ios/com.openai.chat/callback",
    "grant_type": "refresh_token",
    "client_id": "pdlLIX2Y72MIl2rhLhTE9VV9bN905kBh",
    "refresh_token": "替换成你的refresh_token"
}
response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.json()["access_token"])

调用 zhele 的免费api接口获取

import requests
url = "https://token.oaifree.com/api/auth/refresh"
headers = {
    "Content-Type": " x-www-form-urlencoded;charset=UTF-8"
}
data = {
    "refresh_token": "替换成你的refresh_token"
}
response = requests.post(url, data=data)
print(response.json()["access_token"])
baby9 commented 3 months ago

refresh token 的有效期为永久, 且每次用 refresh token 刷新 access token 时得到的 access token 有效期都为10天

maxduke commented 3 months ago

大佬好像没ios设备。 能支持的话,再好不过了。这种方式就是很稳定,自己用脚本每周刷新一次,大半年没出过问题。现在用cookie刷新的方式好像有概率会掉登录。有时候报500错,看log 也是成功刷新,但其实是掉登录了,要重新登录抓cookie。

On Wed, May 15, 2024 at 00:23 baby9 @.***> wrote:

refresh token 的有效期为永久, 且每次用 refresh token 刷新 access token 时得到的 access token 有效期都为10天

— Reply to this email directly, view it on GitHub https://github.com/xqdoo00o/ChatGPT-to-API/issues/54#issuecomment-2110643737, or unsubscribe https://github.com/notifications/unsubscribe-auth/AADLUBEQON55FL5OWPJ7LH3ZCI3BBAVCNFSM6AAAAABHWP5VF2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMJQGY2DGNZTG4 . You are receiving this because you are subscribed to this thread.Message ID: @.***>

xqdoo00o commented 3 months ago

这个client_id是固定的嘛

gkingt commented 3 months ago

这个client_id是固定的嘛

是固定的,zhile接口目前也可以,没有任何限制

baby9 commented 3 months ago

可以参考这两个项目 https://github.com/qy527145/openai_token https://zhile.io/2023/05/19/how-to-get-chatgpt-access-token-via-pkce.html

maxduke commented 3 months ago

可以看下我的代码,跑了很久了 https://github.com/maxduke/go-chatgpt-api/blob/2b8c5585be7f2601e19cc815041f0fca1f44e014/api/common.go#L296 官方接口,不用打码过盾。 感觉要改的话应该在 dep, auth那个改

xqdoo00o commented 3 months ago

抄好了,可以测下,参考文档 首先accounts.txt里加上账户名和随意一个密码,然后cookies.json里如上链接所示,注意需把Name的值改为refresh_token 如果要测试是否正常获取的话,可以在代码前一行加上fmt.Println(err)

maxduke commented 3 months ago

抄好了,可以测下,参考文档 首先accounts.txt里加上账户名和随意一个密码,然后cookies.json里如上链接所示,注意需把Name的值改为refresh_token 如果要测试是否正常获取的话,可以在代码前一行加上fmt.Println(err)

粗略测了下没问题,看了下代码应该目前只支持持单账号,对我来说没问题。 还有一点就是,用refresh_token的话,刷新时间没有必要每天一刷。看了下改动,因为在依赖上,主体程序上应该不太能判断。建议加个环境变量。可以自行控制每隔几天刷新。

xqdoo00o commented 3 months ago

粗略测了下没问题,看了下代码应该目前只支持持单账号,对我来说没问题。 还有一点就是,用refresh_token的话,刷新时间没有必要每天一刷。看了下改动,因为在依赖上,主体程序上应该不太能判断。建议加个环境变量。可以自行控制每隔几天刷新。

PUID是7天有效期,和10天的公约数只有1了

maxduke commented 3 months ago

粗略测了下没问题,看了下代码应该目前只支持持单账号,对我来说没问题。 还有一点就是,用refresh_token的话,刷新时间没有必要每天一刷。看了下改动,因为在依赖上,主体程序上应该不太能判断。建议加个环境变量。可以自行控制每隔几天刷新。

PUID是7天有效期,和10天的公约数只有1了

我魔改的gochatgptapi 是7天一刷。可行么?

xqdoo00o commented 3 months ago

我魔改的gochatgptapi 是7天一刷。可行么?

一天一刷也没啥问题,懒得改了,而且支持多账号呀,cookies.json里设置多个账户名和refresh_token就好了