<?php
/**
* 获取头条小程序分享二维码
*/
function getTtShareQrCode(){
$code_img = 'share_'.$_POST['id'].'_png';
$access_token = get_tt_access_token();
$base_url = 'https://developer.toutiao.com/api/apps/qrcode';
$path = '';
$send_info = [
'access_token'=>$access_token,//服务端 API 调用标识
'appname'=>'toutiao',//是打开二维码的字节系 app 名称,默认为今日头条,toutiao douyin pipixia huoshan
'path'=>$path,//小程序/小游戏启动参数,小程序则格式为 encode({path}?{query}),小游戏则格式为 JSON 字符串,默认为空
'width'=>280,//二维码宽度,单位 px,最小 280px,最大 1280px,默认为 430px
'line_color'=>null,//二维码线条颜色,默认为黑色 {"r":0,"g":0,"b":0}
'background'=>null,//二维码背景颜色,默认为透明
'set_icon'=>false,//是否展示小程序/小游戏 icon,默认不展示
];
$img_buffer = CurlPostJson($base_url,$send_info);//图片 Buffer
//保存图片$code_img
$file = fopen($code_img,"w");//创建件准备写入
fwrite($file,$img_buffer);//写入
fclose($file);//关闭
}
/**
* 获取头条access_token
*/
function get_tt_access_token(){
$data = json_decode(file_get_contents("tt_access_token.json"));
if(empty($data) || $data->expire_time < time()) {
$base_url = 'https://developer.toutiao.com/api/apps/token';
$send_info = [
'appid'=>C('TT_APP_ID'),//小程序 ID
'secret'=>C('TT_APP_SECRET'),//小程序的 APP Secret,可以在开发者后台获取
'grant_type'=>'client_credential',//获取 access_token 时值为 client_credential
];
$base_url = $base_url.'?appid='.$send_info['appid'].'&secret='.$send_info['secret'].'&grant_type='.$send_info['grant_type'];
$res = CurlGet($base_url);
$data = json_decode($res,true);
if($data){
$data['expire_time'] = time() + $data['expires_in'];//过期时间
file_put_contents('tt_access_token.json',json_encode($data));
return $data['access_token'];
}
} else {
return $data->access_token;
}
}
/**
* curl Get请求
* @param $url
* @return mixed
*/
function CurlGet($url) {
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//跳过ssl检查项
$output = curl_exec($ch);
if($output === FALSE ){
echo "CURL Error:".curl_error($ch);
}
curl_close($ch);
return $output;
}
/**
* curl POST Json请求
* @param $url
* @param $postData
* @return mixed
*/
function CurlPostJson($url, $postData) {
$ch = curl_init();//初始化一个cURL会话
curl_setopt($ch,CURLOPT_URL,$url);//设置请求的URL
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);//true:返回结果,不输出
curl_setopt($ch, CURLOPT_POST, true);//true:设置为POST方式
//传送json数据
$json_data = json_encode($postData);
curl_setopt($ch,CURLOPT_POSTFIELDS,$json_data);
curl_setopt($ch,CURLOPT_HTTPHEADER,array('Content-Type:application/json'));
curl_setopt($ch, CURLINFO_HEADER_OUT, true);//true:追踪句柄的请求字符串
$output = curl_exec($ch);//执行给定的cURL会话
if($output === FALSE ){
echo "CURL Error:".curl_error($ch);
}
curl_close($ch);//关闭一个cURL会话
return $output;
}