|
|
@@ -0,0 +1,96 @@
|
|
|
+
|
|
|
+```shell
|
|
|
+# WEB扫码接入 参考 https://developer.open-douyin.com/docs/resource/zh-CN/dop/develop/sdk/web-app/web/permission
|
|
|
+# 打开链接,扫码登录
|
|
|
+GET https://open.douyin.com/platform/oauth/connect/?client_key=aw6aipmfdtplwtyq&response_type=code&scope=user_info,renew_refresh_token,trial.whitelist&redirect_uri=https://api.magong.site/verify_callback HTTP/1.1
|
|
|
+Host: open.douyin.com
|
|
|
+
|
|
|
+# 服务器收到返回信息。程序员马工
|
|
|
+GET /verify_callback?code=936c3671e073703cnzV93iYzyWbdLIZmFPQJ&state=&scopes=user_info,trial.whitelist HTTP/1.1
|
|
|
+# 渣渣辉
|
|
|
+GET /verify_callback?code=676a1101ea02bc5dTaUVtKg8c5enYaGqB4dT&state=&scopes=user_info,trial.whitelist HTTP/1.1
|
|
|
+```
|
|
|
+
|
|
|
+GPT:
|
|
|
+以下是接口文档:
|
|
|
+步骤一:获取授权码 code
|
|
|
+请求示例:
|
|
|
+https://open.douyin.com/platform/oauth/connect?client_key=awf4xgy8cibvhzuv&response_type=code&scope=user_info&redirect_uri=https://api.magong.site/verify_callback
|
|
|
+成功示例:
|
|
|
+GET /verify_callback?code=676a1101ea02bc5dTaUVtKg8c5enYaGqB4dT&state=&scopes=user_info,trial.whitelist HTTP/1.1
|
|
|
+
|
|
|
+
|
|
|
+步骤二:通过授权码 code 获取 access_token
|
|
|
+HTTP URL
|
|
|
+https://open.douyin.com/oauth/access_token/
|
|
|
+HTTP Method
|
|
|
+POST
|
|
|
+Content-Type string "application/json"
|
|
|
+请求示例
|
|
|
+curl --location 'https://open.douyin.com/oauth/access_token/' \
|
|
|
+--header 'Content-Type: application/json' \
|
|
|
+--data '{
|
|
|
+ "grant_type": "authorization_code",
|
|
|
+ "client_key": "aw05az2qjv4b****",
|
|
|
+ "client_secret": "7802f4e6f243e659d51135445fe******",
|
|
|
+ "code": "676a1101ea02bc5dTaUVtKg8c5enYaGqB4dT"
|
|
|
+}'
|
|
|
+响应示例
|
|
|
+{
|
|
|
+ "data": {
|
|
|
+ "access_token": "act.f7094fbffab2ecbfc45e9af9c32bc241oYdckvBKe82BPx8T******",
|
|
|
+ "captcha": "",
|
|
|
+ "desc_url": "",
|
|
|
+ "description": "",
|
|
|
+ "error_code": 0,
|
|
|
+ "expires_in": 1296000,
|
|
|
+ "log_id": "20230525105733ED3ED7AC56A******",
|
|
|
+ "open_id": "b9b71865-7fea-44cc-******",
|
|
|
+ "refresh_expires_in": 2592000,
|
|
|
+ "refresh_token": "rft.713900b74edde9f30ec4e246b706da30t******",
|
|
|
+ "scope": "user_info"
|
|
|
+ },
|
|
|
+ "message": "success"
|
|
|
+}
|
|
|
+异常示例
|
|
|
+{
|
|
|
+ "data": {
|
|
|
+ "description": "Parameter error",
|
|
|
+ "error_code": 2100005
|
|
|
+ },
|
|
|
+ "extra": {
|
|
|
+ "logid": "2020070614111601022506808001045D59",
|
|
|
+ "now": 1594015876138
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+以下是我的代码:
|
|
|
+```python
|
|
|
+app = FastAPI()
|
|
|
+
|
|
|
+@app.get("/")
|
|
|
+async def read_root(request: Request):
|
|
|
+ return FileResponse(os.path.join("static", "index.html"))
|
|
|
+
|
|
|
+@app.get("/jsbridge")
|
|
|
+async def verify_callback(request: Request):
|
|
|
+ return FileResponse(os.path.join("static", "douyin_open.umd.js"))
|
|
|
+
|
|
|
+@app.get("/verify_callback")
|
|
|
+async def verify_callback(request: Request):
|
|
|
+ # 打印请求方法
|
|
|
+ print(f"Method: {request.method}")
|
|
|
+
|
|
|
+ # 打印请求头
|
|
|
+ print(f"Headers:")
|
|
|
+ for key, value in request.headers.items():
|
|
|
+ print(f"{key}: {value}")
|
|
|
+
|
|
|
+ # 打印查询参数
|
|
|
+ print(f"Query Parameters:")
|
|
|
+ for key, value in request.query_params.items():
|
|
|
+ print(f"{key}: {value}")
|
|
|
+ return HTMLResponse("<h1>Callback Received! Verification Successful.</h1>")
|
|
|
+
|
|
|
+```
|
|
|
+用 Fastapi fastapi_amis_admin 完成以上文档功能。将 verify_callback 获得的 code 获取 access_token 。然后将 access_token 、 expires_in、open_id、refresh_expires_in、refresh_token 存入数据库。不要给太多说明,直接写代码
|