【PHP】抖音授权登录并获取用户公开信息(网页)

抖音官方文档:https://open.douyin.com/platform/doc/OpenAPI-oauth2

抖音的官方文档和接口及其随意。。。。

调用流程包括:

  1. 第三方发起抖音授权登录请求,抖音用户允许授权第三方应用后(扫码确认或账号密码授权登录),确认通过后,会重定向到第三方网站(回调接口)。并且附带授权临时票据(code)

  2. 第三方通过code参数,以及ClientKey和ClientSecret等参数,通过API换取access_token

  3. 通过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

scope 

 

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_tokenstring调用/oauth/access_token/生成的token,此token需要用户授权
open_idstring通过/oauth/access_token/获取,用户唯一标志

要获取用户公开信息,需要先获取access_token和open_id

获取access_token和open_id:

获取用户公开信息

请求方式:GET​

请求链接:https://open.douyin.com/oauth/access_token/

名称类型必填说明

client_key 

string应用唯一标识
client_secretstring应用唯一标识对应的密钥
codestring授权码。即/oauth/connect/回调时返回的code
grant_typestring写死"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

刷新access_token
请求方式:GET​
请求链接:https://open.douyin.com/oauth/refresh_token/
名称类型必填说明

client_key 

string应用唯一标识
refresh_tokenstring填写通过access_token获取到的refresh_token参数
grant_typestring填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),此时需要重新走用户授权流程。

 

 

  • 22
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 34
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 34
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值