抖音官方文档:https://open.douyin.com/platform/doc/OpenAPI-oauth2
抖音的官方文档和接口及其随意。。。。
调用流程包括:
-
第三方发起抖音授权登录请求,抖音用户允许授权第三方应用后(扫码确认或账号密码授权登录),确认通过后,会重定向到第三方网站(回调接口)。并且附带授权临时票据(code)
-
第三方通过code参数,以及ClientKey和ClientSecret等参数,通过API换取access_token
-
通过access_token进行接口调用,获取用户基本信息及其他操作等。
一、注册账号
在抖音开放平台注册账号 ,网址:https://open.douyin.com/platform
二、创建应用
填写信息,然后提交,提交之后需要审核
三、查看应用
在《管理中心》可以查看应用信息
审核通过之后会得到Client Key和Client Secret,调用接口时需要使用
四、应用详情
在“接口权限”申请需要使用的权限
在“特殊权限”中申请“静默授权”,用来获取用户的open_id,open_id是用户在该平台的唯一标识
五、获取登录二维码
| 获取授权码(code) 请求方式:GET 请求链接:https://open.douyin.com/platform/oauth/connect/
| |||
|---|---|---|---|
| 名称 | 类型 | 必填 | 说明 |
| client_key
| string | 是 | 应用唯一标识 |
| response_type
| string | 是 | 填写code Available values : code |
|
| string | 是 | 应用授权作用域,多个授权作用域以英文逗号(,)分隔 |
| redirect_uri
| string | 是 | 授权成功后的回调地址,必须以http/https开头。 |
| state
| string | 否 | 用于保持请求和回调的状态 |
- public function GetLoginQrcode()
- {
- $url = $this->url . ''/platform/oauth/connect'';
- $redirect_uri = "回调地址";
- $scope = "scope";
- $url = $url . "?client_key=" . $this->key . "&response_type=code&scope=" . $scope . "&redirect_uri=" . $redirect_uri . "&state=1";
- header(''Location:'' . $url);
- exit();
- }
用户允许授权后,将会重定向到redirect_uri的网址上,并且带上code和state参数
六、获取用户公开信息
| 获取用户公开信息 请求方式:GET 请求链接:https://open.douyin.com/oauth/userinfo/ | |||
| 名称 | 类型 | 必填 | 说明 |
| access_token | string | 是 | 调用/oauth/access_token/生成的token,此token需要用户授权 |
| open_id | string | 是 | 通过/oauth/access_token/获取,用户唯一标志 |
要获取用户公开信息,需要先获取access_token和open_id
获取access_token和open_id:
| 获取用户公开信息 请求方式:GET 请求链接:https://open.douyin.com/oauth/access_token/ | |||
| 名称 | 类型 | 必填 | 说明 |
| client_key | string | 是 | 应用唯一标识 |
| client_secret | string | 是 | 应用唯一标识对应的密钥 |
| code | string | 是 | 授权码。即/oauth/connect/回调时返回的code |
| grant_type | string | 是 | 写死"authorization_code"即可 |
- public function get_access_token($code)
- {
- $url = $this->url . ''/oauth/access_token/'';
-
- $params = array(
- ''client_key'' => $this->key,
- ''client_secret'' => $this->secret,
- ''code'' => $code,
- ''grant_type'' => ''authorization_code'',
- );
-
- $data = $this->curl_post($url, $params);
- return $data;
- }
curl_post方法:https://blog.csdn.net/I_lost/article/details/104518356
返回数据:
根据access_token和open_id获取用户信息:
- public function getUserInfo($access_token, $openid)
- {
- $url = $this->url . ''/oauth/userinfo/'';
-
- $params = array(
- ''access_token'' => $access_token,
- ''open_id'' => $openid
- );
-
- $result = $this->curl_post($url, $params);
- return $result;
- }
返回数据:
公用接口返回数据极少,详细数据可使用99接口(http://www.99api.com/comm_details?id=2034),但是需付费,且和抖音官方接口返回数据无法判断是否是同一个用户。
七、刷新access_token
| |||
| 名称 | 类型 | 必填 | 说明 |
| client_key | string | 是 | 应用唯一标识 |
| refresh_token | string | 是 | 填写通过access_token获取到的refresh_token参数 |
| grant_type | string | 是 | 填refresh_token |
- public function refresh_token($refresh_token)
- {
- $url = $this->url . ''/oauth/refresh_token/'';
-
- $params = array(
- ''client_key'' => $this->key,
- ''grant_type'' => "refresh_token",
- ''refresh_token'' => $refresh_token,
- );
-
- $result = $this->curl_get($url, $params);
- return $result;
- }
八、关于access_token和refresh_token的有效期
官方文档:
当access_token过期(过期时间15天)后,可以通过该接口使用refresh_token(过期时间30天)进行刷新:
1. 若access_token已过期,调用接口会报错(error_code=10008或2190008),refresh_token后会获取一个新的 access_token以及新的超时时间。
2. 若access_token未过期,refresh_token不会改变原来的access_token,但超时时间会更新,相当于续期。
3. 若refresh_token过期,获取access_token会报错(error_code=10010),此时需要重新走用户授权流程。