php 抖音openApi 获取粉丝权限

抖音开放平台 php-sdk注意事项

1 版本必须为php7.1

2 当本地curl需要访问https时,出现SSL certificate: unable to get local issuer certificate错误信息

解决办法:
到http://curl.haxx.se/ca/cacert.pem下载pem文件,并将文件拷贝到D:\phpStudy\PHPTutorial\cacert.pem (根据实际修改)
在php.ini
增加
curl.cainfo = “D:\phpStudy\PHPTutorial\cacert.pem”

 

php 抖音openApi 获取粉丝权限_第1张图片

获取权限 用的tp5

require_once APPPATH .'libraries/Qrcode.php';//生成二维码要引入相应文件

$ClientKey=config('site.ClientKey');
$douyinClientSecret=config('site.douyinClientSecret');
$url="https://open.douyin.com/platform/oauth/connect/?client_key=".$ClientKey."&response_type=code&scope=user_info,fans.data&redirect_uri=http://screen.imfic.com.cn/admin.php/douyin/notify";
//生成图片返回前端
$img  = QRcode::png($url);

注意:scope=aweme.share%2Cuser_info,fans.data   //scope权限问题,要想每次扫码都出现授权登录页面需要加的  
//%2C  表示的 ASCII 字符“,”,意思是,这里的%2C,可以用逗号代替
// aweme.share是接口权限,在申请ClientKey和ClientSecret会有

登录会跳转到抖音授权登录界面
使用抖音登录会跳转到回调地址

 public function notify(){
       $res = ['code'=>0, 'data'=>[]];
       $ClientKey=config('site.ClientKey');
       $douyinClientSecret=config('site.douyinClientSecret');
       $code=input("get.code");
       $url="https://open.douyin.com/oauth/access_token/?client_key=".$ClientKey."&client_secret=".$douyinClientSecret."&code=".$code."&grant_type=authorization_code";
       file_put_contents('1.txt', $url);
       $info=$this->getJson($url);
       if($info['message']=="success"){
         $data['access_token']=$info['data']['access_token'];
         $data['open_id']=$info['data']['open_id'];
         $data['expires_in']=$info['data']['expires_in'];
         $data['refresh_token']=$info['data']['refresh_token'];
         $data['addtime']=time();
         $res=Db::table('daping_douyintoken')->insert($data);
         if($res){
             $res['data'] = 'success';
             $res['code']= 1;
         } else {
             $res['data'] = '网络异常!';
             $res['code']= 2;
         }
       } else {
            $res['data'] = 'code已失效';
            $res['code']= 3;
       }

       echo json_encode($res,JSON_UNESCAPED_UNICODE);
 }

一个获取粉丝情况的接口的调用

  public function  fansData(){
          header('Access-Control-Allow-Origin:*');
          $timestamp = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
          $isExistToday=Db::table('daping_douyin')->where('addtime>'.$timestamp)->find();
          if ($isExistToday) {
             return json_encode($isExistToday);
          }else{
             $info=Db::table('daping_douyintoken')->order('addtime desc')->find();
          $ClientKey=config('site.ClientKey');
          $douyinClientSecret=config('site.douyinClientSecret');
          $url="https://open.douyin.com/fans/data/?access_token=".$info['access_token']."&open_id=".$info['open_id'];
          $info=$this->getJson($url);
          $data=$info['data'];
          if($data['error_code']==0){
            $fans_data=$data['fans_data'];
            $gender_distributions_data=$fans_data['gender_distributions'];//男女
            $age_distributions_data=$fans_data['age_distributions'];//年龄
            $active_days_distributions=$fans_data['active_days_distributions'];//粉丝活跃天数
      
            $insertData['all_fans_num']=$fans_data['all_fans_num'];

            $insertData['man']=$gender_distributions_data[0]['value'];
            $insertData['woman']=$gender_distributions_data[1]['value'];

            $insertData['age_less23']=$age_distributions_data[0]['value'];
            $insertData['age_24_29']=$age_distributions_data[1]['value'];
            $insertData['age_30_35']=$age_distributions_data[2]['value'];
            $insertData['age_36_41']=$age_distributions_data[3]['value'];
            $insertData['age_greater_42']=$age_distributions_data[4]['value'];

            $insertData['day0_4']=$active_days_distributions[0]['value'];
            $insertData['day5_12']=$active_days_distributions[1]['value'];
            $insertData['day13_20']=$active_days_distributions[2]['value'];
            $insertData['day_21_31']=$active_days_distributions[3]['value'];
         
            $insertData['addtime']=time();
          

            $flag=Db::table('daping_douyin')->insert($insertData);
            if ($flag) {
             $data= Db::table('daping_douyin')->order('addtime desc')->find();
             return  json_encode($data);
            }else{
             return json_encode(array('code'=>400,'msg'=>'插入数据失败'));
            }

         }
       }
        
    }

 

你可能感兴趣的:(php 抖音openApi 获取粉丝权限)