AyrShare.php 7.6 KB
<?php

namespace App\Helper;

use GuzzleHttp\Client;

/**
 * @name: ayr_share社交绑定
 */
class AyrShare
{
    public $path = 'https://app.ayrshare.com';
    //api_key
    public $api_key = 'G8GQW3X-XBTMGXW-QPDDZ9A-WE1Z5SB';
    //系统设置
    public $config = [

    ];
    //profile_key
    public $profile_key = '';
    //设置请求头
    public $headers = [
        'Authorization' => 'Bearer ',
        'Content-Type' => 'application/json',
    ];
    //私钥
    private $private_key = "-----BEGIN RSA PRIVATE KEY-----
MIICWgIBAAKBgGFatMeBeaw7QJrqmylMLZlwuuO0FA/EZg5/g7Rrqu+FgpwvFkJq
9twEZJY+aIdDH8/RVrCZQGR/xUxKw9v4ows+sLwi4g41m8KRKDXUcJwQvSlwsHAi
h9hPGZxDsRK0Nv4pZ7XqGgh0Wb0VypX/+Q1dhX9BnXQmvEKayk8GQWQxAgMBAAEC
gYAFqOJNnudV7fPpja4LjpQwEW+sATIRYJeWTC9587ByUE6xicM/hTxouhCm82Xc
Rzi4OjFR/vbRYOQ1dTtBtIi18fdRrseQNyR/N2NZjw1X8n5aZcw5NVaa3d3YTQNa
uzjnYF5eYSOD4pNKKIDc35VHdmvGCV/JXwQKMTgu1+4AAQJBAL5jjN3kvMKFF8vG
DyYR8k+wPG9iXAdR0HjVNB3OzxKVW0MTwM32pJBXCmF1MOziL8WC48VHQL48hVRa
52xRqAECQQCC53rrrOPhPCLIb6kBfgqnxCojqlUK9paFL7NYTPtLYcOajY6+NiKT
CG1gaOwZh4r34HF7I59l/Ds98Z4nQDwxAkAC4/oIiGeBQIoK8vfZ6R3XreJNAp5J
EinrG7mN1kz4iEH5c7xSpDL9agTjU+cpQYneIs2Yeit2d+7CSBsJXvgBAkBDFsfU
yYLxCJT7DN8dOK/VU6AVL1Luj3qNP+k2tB2GgNBzAWHK8ou9t2/3HU8DtofuikUe
yx8Cccca9B4OF8nBAkAgIUZKGmVNFcGnFFo55vSJInNXFo4HCJ2o4DunBORVtQ/j
zFePUMXy1bFghAfzNKlrc5XgH4ixeeMh3cDtU97K
-----END RSA PRIVATE KEY-----";

    /**
     * @name   :(创建子账户配置文件)post_create_profiles
     * @author :lyh
     * @method :post
     * @time   :2023/5/5 15:16
     */
    public function post_create_profiles($data){
        $param = [
            'title'=>$data['title'],
        ];
        $url = $this->path.'/api/profiles/profile';
        return $this->http_click('post',$url,$param);
    }
    /**
     * @name   :(删除子账户配置文件)deleted_profiles
     * @author :lyh
     * @method :post
     * @time   :2023/5/5 15:16
     */
    public function deleted_profiles($data){
        $param = [
            'title'=>$data['title'],
            'profileKey'=>$this->profile_key,
        ];
        $url = $this->path.'/api/profiles/profile';
        return $this->http_click('delete',$url,$param);
    }

    /**
     * @name   :(跳转第三方生成jwt令牌)post_generate_jwt
     * @author :lyh
     * @method :post
     * @time   :2023/5/5 18:07 https://app.ayrshare.com/api/profiles/generateJWT
     */
    public function post_generate_jwt($data,$domain = 'globalso'){
        $param = [
            'domain'=>$domain,
            'privateKey'=>$this->private_key,
            'profileKey'=>$data['profileKey'],
//            'logout'=>true
        ];
        $url = $this->path.'/api/profiles/generateJWT';
        return $this->http_click('post',$url,$param);
    }

    /**
     * @name   :(获取当前用户的配置文件)get_profiles
     * @author :lyh
     * @method :post
     * @time   :2023/5/6 16:01
     */
    public function get_profiles(){
        $url = $this->path.'/api/profiles';
        return $this->http_click('get',$url,[]);
    }

    /**
     * @name   :(获取所有用户的配置文件)get_profiles_users
     * @author :lyh
     * @method :post
     * @time   :2023/5/6 16:44
     */
    public function get_profiles_users($api_key){
        $this->headers['Authorization'] = $this->headers['Authorization'].$api_key;
        $url = $this->path.'/api/user';
        return $this->http_click('get',$url,[],$this->headers);
    }
    /**
     * @name   :(通过用户名获取社交账号)get_brand_user
     * @author :lyh https://app.ayrshare.com/api/brand/byUser
     * @method :post
     * @time   :2023/5/5 17:32
     */
    public function get_brand_user($param){
        //[[platforms=>'instagram','instagramUser'=>'user']]
        $str = '';
        foreach ($param as $k =>$v){
            //platforms[0]=instagram&platforms[1]=twitter&twitterUser=ayrshare&instagramUser=nygiants',
        }
        $url = $this->path.'/api/brand/byUser?'.$str;
        return $this->http_click('get',$url);
    }
    /**
     * @name   :获取过去30天发布的历史记录(1-30)
     * @author :lyh
     * @method :get
     * @time   :2023/5/5 10:00
     */
    public function get_analytics_links($to_day){
        $last_days = (string)$to_day;
        $url = $this->path.'/analytics/links?lastDays='.$last_days;
        return $this->http_click('get',$url);
    }

    /**
     * @name   :(通过 Ayrshare 获取给定帖子的实时分析,例如点赞、印象、转推等)post_analytics
     * @author :lyh
     * @method :post
     * @time   :2023/5/5 11:56
     */
    public function post_analytics($id){
        $param = [
            'id'=>$id,
            'platforms' => ['facebook', 'instagram', 'twitter', 'linkedin', 'pinterest', 'youtube', 'tiktok'],
        ];
        $url = $this->path.'/api/analytics/post';
        return $this->http_click('post', $url, $param);
    }
    /**
     * @name   :(获取特定用户个人资料)analytics_post
     * @author :lyh
     * @method :post
     * @time   :2023/5/5 10:43
     */
    public function post_analytics_social(){
        $post_data = [
            'platforms' => ['facebook', 'instagram', 'twitter', 'linkedin', 'pinterest', 'youtube', 'tiktok'],
        ];
        $url = $this->path.'/api/analytics/social';
        return $this->http_click('post',$url,$post_data);
    }

    /**
     * @name   :(设置自动计划)post_schedule_set
     * @author :lyh
     * @method :post
     * @time   :2023/5/5 13:58
     */
    public function post_schedule_set($data){
        $param = [
            'schedule'=>["13:05Z", "20:14Z"],
            'title'=>$data['title'],
        ];
        $url = $this->path.'/api/auto-schedule/set';
        return $this->http_click('post',$url,$param);
    }

    /**
     * @name   :(删除自动计划)delete_schedule
     * @author :lyh
     * @method :post
     * @time   :2023/5/5 14:04
     */
    public function delete_schedule($data){
        $param = [
            'title'=>$data['title'],
        ];
        $url = $this->path.'/api/auto-schedule/delete';
        return $this->http_click('delete',$url,$param);
    }

    /**
     * @name   :(列出自动计划)get_schedule_list
     * @author :lyh
     * @method :post
     * @time   :2023/5/5 14:08
     */
    public function get_schedule_list(){
        $url = $this->path.'/api/auto-schedule/list';
        return $this->http_click('get',$url);
    }

    /**
     * @name   :(发布到用户个人资料)post_user
     * @author :lyh
     * @method :post
     * @time   :2023/5/5 15:00
     */
    public function post_profiles($data){
        $param = [
            'post'=>$data['post'],
            'platforms'=>$data['platforms'],
            'profileKey'=>$this->profile_key,
            'mediaUrls'=>$data['mediaUrls']
        ];
        $url = $this->path.'/api/post';
        return $this->http_click('post',$url,$param);
    }

    /**
     * 发送http post,get,put,delete请求
     * @param type $url
     * @param type $post_data
     */
    function http_click($method = 'post',$url, $param = [],$header = [])
    {
        if(!empty($param)){
            $post_data['json'] = $param;
        }
        if(empty($header)){
            $this->headers['Authorization'] = $this->headers['Authorization'].$this->api_key;
        }
        $post_data['headers'] = !empty($header) ? $header : $this->headers;
        $client = new Client();
        try {
            $res = $client->request(strtoupper($method), $url, $post_data)->getBody()->getContents();
            return (array)json_decode($res);
        } catch (\Exception $e) {
            return ["status"=>"fail","message"=>$e->getMessage()];
        }
    }
}