artisen2021 / linkedinsdk
Wonderkind端点的Linkedin SDK
v2.0.1
2022-08-24 13:27 UTC
Requires
- php: ^8.1
- ext-curl: *
- fakerphp/faker: ^1.19
- guzzlehttp/guzzle: ^7.0
Requires (Dev)
- mockery/mockery: ^1.5
- phpunit/phpunit: ^9.5
README
安装
您至少需要PHP 8.1。
使用composer包管理器安装包的最新版本:composer require artisen2021/linkedinsdk
或者将此包作为依赖项添加到composer.json。如果您从未使用过Composer,您应该开始安装composer。
开始使用
在开始之前,阅读LinkedIn API文档非常重要。
在“我的应用”部分,创建一个与您的LinkedIn页面相关的新开发人员应用。保存应用的客户端ID和客户端密钥。生成一个访问令牌。确保您根据您的使用案例拥有正确的权限。申请市场营销开发平台。
实例化客户端
$client = new Client( 'YOUR_LINKEDIN_APP_CLIENT_ID', 'YOUR_LINKEDIN_APP_CLIENT_SECRET' );
设置本地重定向URL
设置自定义重定向URL。当用户连接到LinkedIn并被重定向到您的应用程序时,将调用此URL。
$this->linkedInClient->setRedirectUrl('https://your.domain/callback');
获取登录URL
为了执行OAuth 2.0流程,您必须将成员的浏览器重定向到LinkedIn的OAuth 2.0授权页面,在那里成员连接到LinkedIn,然后接受或拒绝您应用的权限请求。要获取重定向到LinkedIn的URL,请使用以下方法
$loginUrl = $client->getLoginUrl($scopes);
用户连接并完成授权过程后,浏览器将重定向到重定向_uri查询参数中提供的URL,并出现在URL中的授权码。此代码是一个值,您可以使用它来与LinkedIn交换OAuth 2.0访问令牌。
获取访问令牌
要获取访问令牌
$this->token = (new AccessTokenRequest($this->linkedInClient))->getAccessToken($code)->getToken();
在AccessTokenRequest类中,此令牌存储在文件token.json中
file_put_contents('token.json', json_encode($this->accessToken));
此访问令牌用于API调用的头部。
$header = ['Authorization' => 'Bearer ' . $this->token];
管理活动组
创建活动组
$campaignGroupRequest = new CampaignGroupRequest($this->linkedInClient, $this->accessTokenCode); $campaignGroup = $campaignGroupRequest->create([ 'account_id' => env('LINKEDIN_ACCOUNT_ID'), 'name' => 'CampaignResources Group Test', 'start' => 1672531200000, 'end' => 1672617600000, 'total_budget' => '100', 'currency' => 'EUR' ]);
删除活动组
$campaignGroupRequest = new CampaignGroupRequest($this->linkedInClient, $this->accessTokenCode); $campaignGroupRequest->delete($campaignGroupId);
更新活动组
$campaignGroupRequest = new CampaignGroupRequest($this->linkedInClient, $this->accessTokenCode); $campaignGroupRequest->update($campaignGroupId, $this->newParams);
管理活动
创建活动
$campaignRequest = new CampaignRequest($this->linkedInClient, $this->accessTokenCode); $campaign = $campaignRequest->create([ 'account_id' => env('LINKEDIN_ACCOUNT_ID'), 'campaign_group_id' => $campaignGroupId, 'dailyBudget' => [ 'amount' => '20', 'currencyCode' => 'EUR', ], 'costType' => 'CPM', 'country' => 'NL', 'language' => 'nl', 'name' => 'CampaignResources Test', 'start' => 1672531200000, 'end' => 1672617600000, 'locations' => [ "urn:li:geo:103644278" ], 'type' => 'SPONSORED_UPDATES', 'unitCost' => [ 'amount' => '30', 'currencyCode' => 'EUR', ], 'status' => 'ACTIVE' ]);
删除活动
$campaignRequest = new CampaignRequest($this->linkedInClient, $this->accessTokenCode); $campaignRequest->delete($campaignId);
更新活动
$campaignRequest = new CampaignRequest($this->linkedInClient, $this->accessTokenCode); $campaignRequest->update($campaignId, $this->newParams);
管理广告
创建广告(图片广告)
$adRequest = new AdRequest($this->linkedInClient, $this->accessTokenCode); $imageAd = $adRequest->create([ 'account_id' => env('LINKEDIN_ACCOUNT_ID'), 'linkedin_page_id' => env('LINKEDIN_PAGE_ID'), 'campaign_id' => $campaignId, 'media_type' => 'image', 'message' => 'Image AdResources Test', 'headline' => 'Image AdResources Test', 'landing_page_url' => 'https://www.example.com/', 'media_url' => 'https://www.example.com/image.jpg', 'call_to_action' => 'attend', ]);
删除广告
$adRequest = new AdRequest($this->linkedInClient, $this->accessTokenCode); $adRequest->delete($adId);
更新广告
$adRequest = new AdRequest($this->linkedInClient, $this->accessTokenCode); $adRequest->update($adId, [ 'account_id' => env('LINKEDIN_ACCOUNT_ID'), 'linkedin_page_id' => env('LINKEDIN_PAGE_ID'), 'campaign_id' => $campaignId, 'media_type' => 'image', 'message' => 'Image AdResources Updated Test', 'headline' => 'Image AdResources Updated Test', 'landing_page_url' => 'https://www.example.com/', 'media_url' => 'https://www.example2.com/image.jpg', 'call_to_action' => 'attend' ]);
管理广告定位
获取位置
$targetingRequest = new TargetingRequest($this->linkedInClient, $this->accessTokenCode); $adFetched = $targetingRequest->fetchLocation($location);
获取Urn
$targetingRequest = new TargetingRequest($this->linkedInClient, $this->accessTokenCode); $urns = $targetingRequest->fetchUrns($query,$facet);
获取相似
$targetingRequest = new TargetingRequest($this->linkedInClient, $this->accessTokenCode); $similars = $targetingRequest->fetchSimilar($urn,$facet);
管理社交媒体页面
获取待处理客户端页面
$pendingPagesEvent = new LinkedInRequestPendingPagesEvent(env('LINKEDIN_PAGE_ID')); $socialPages = new SocialPageRequest($this->linkedInClient, $this->accessTokenCode); $pendingPages = $socialPages->getPendingClientPages($pendingPagesEvent);
获取页面数据
$pageDataEvent = new LinkedInGetPageDataEvent(env('LINKEDIN_PAGE_ID')); $socialPages = new SocialPageRequest($this->linkedInClient, $this->accessTokenCode); $pageData = $socialPages->getPageData($pageDataEvent);
获取页面当前状态
$pageCurrentStatusEvent = new LinkedInGetPageCurrentStatusEvent(env('LINKEDIN_PAGE_ID')); $socialPages = new SocialPageRequest($this->linkedInClient, $this->accessTokenCode); $pageCurrentStatus = $socialPages->getPageCurrentStatus($pageCurrentStatusEvent);
按页面ID搜索广告账户
$adAccountsEvent = new LinkedInRequestAdAccountsEvent(env('LINKEDIN_PAGE_ID')); $socialPages = new SocialPageRequest($this->linkedInClient, $this->accessTokenCode); $adAccounts = $socialPages->searchAdAccountsByPageId($adAccountsEvent);