开发流程如下图
为方便开发 我用的是沙盒模式
开放平台前三个接口开发流程如下,我的代码没做相关优化
代码如下
1、 接口调用凭证
//接口调用凭证
public function getAccessToken()
{
$uri = 'https://open-sandbox.douyin.com/api/apps/v2/token';
$options = [
'body' => json_encode([
'appid' => 'tt5d842b39c2bb31',
'secret' => '9208a4e3130eb24cf9fcbc4a4906765c1',
'grant_type' => 'client_credential']),
'headers' => [
'Content-Type' => 'application/json'
]
];
$response = (new \GuzzleHttp\Client)->post($uri, $options);
$body = $response->getBody();
$stringBody = (string)$body;
$result = json_decode($stringBody, true);
if ($result['err_no'] == 0) {
return $result['data']['access_token'];
}
return null;
}
2、登录 (通过小程序login接口获取到登录凭证后,开发者可以通过服务器发送请求的方式获取 session_key 和 openId)。
//通过小程序login接口获取到登录凭证后,开发者可以通过服务器发送请求的方式获取 session_key 和 openId。
public function code2Session()
{
$uri = 'https://open-sandbox.douyin.com/api/apps/v2/jscode2session';
//客户端获取并传过来
$code = 'T9loKB1gsyl92x5s7wiTwKteJgeA5Pjq21JNWPtXfx1BUXz0PIzl2ruw2fnPjc9VDA97LlXkKvQW6qTM-0jUNN-frfnVZ5nBluYdVos3FJw8mGe0iaHJHkXq7i4';
$options = [
'body' => json_encode([
'appid' => 'tt5d842b39c2b6',
'secret' => '9208a4e3130eb2408fcf9fcbc4a496',
'code' => $code]),
'headers' => [
'Content-Type' => 'application/json'
]
];
$response = (new \GuzzleHttp\Client)->post($uri, $options);
$body = $response->getBody();
$stringBody = (string)$body;
$result = json_decode($stringBody, true);
if ($result['err_no'] == 0) {
return $result['data'];
}
return ['openid' => '_000DO0RDLCqmW1_EcB4GXidO-bl8T', 'session_key' => ''];
}
3、数据缓存
//数据缓存
public function setUserstorage()
{
$user = $this->code2Session();
$body = [
'kv_list' => [
['key' => 'name', 'value' => 'yang']
]
];
//用户登录态签名
$signature = hash_hmac('sha256', json_encode($body), $user['session_key']);
$uri = 'https://open-sandbox.douyin.com/api/apps/set_user_storage';
$response = (new \GuzzleHttp\Client)->post($uri, [
'query' => [
'access_token' => $this->getAccessToken(),
'openid' => $user['openid'],
'signature' => $signature,
'sig_method' => 'hmac_sha256',
],
'body' => json_encode($body),
'headers' => [
'Content-Type' => 'application/json'
]
]);
$body = $response->getBody();
$stringBody = (string)$body;
$result = json_decode($stringBody, true);
dd($result);
}
发表评论 取消回复