g1k / yii2-direct-api
Yii2 Api Direct 库
Requires
- php: >=5.4.0
- yiisoft/yii2: ^2.0.6
This package is not auto-updated.
Last update: 2020-10-30 21:40:32 UTC
README
yii2-direct-api 为 Yii2 框架提供了对 Yandex.Direct API 的支持。是 YiiDirectApi 的分支。
使用方法
在使用此扩展之前,需要 注册一个应用,该应用将与 Yandex.Direct API 一起工作。注册后,应用将被分配一个应用程序 ID 和密码。
安装和配置扩展
建议通过 composer 安装此扩展。
$ php composer.phar require g1k/yii2-direct-api "dev-master"
或者
"g1k/yii2-direct-api": "dev-master"
在 composer.json 文件的 require 部分添加以下内容。
在应用程序配置中添加组件
'components'=>[
...
'direct' => [
'class' => 'g1k\direct\DirectApi',
'clientId' => 'ид приложения',
'clientSecret' => 'секретный ключ приложения',
'useSandbox' => true, # использовать ли песочницу. по умолчанию false — использует боевое API
'locale' => 'ru', # на каком языке отдавать ответы. Если не указан, то используется язык приложения
'responseType' => 'code', # Тип ответа от яндекса при получении токена (code, token). Если не указан, то используется code.
]
],
获取令牌
为了获取令牌,需要将用户引导到 Yandex.Direct 的页面。可以通过以下方式获取该页面的链接
$link = Yii::$app->direct->getAuthorizeUrl();
在 getAuthorizeUrl() 方法中,还可以传递 $state 参数,它将被以原始形式从 Yandex 返回。
用户点击生成的链接并允许访问后,Yandex 将返回在应用程序注册时指定的 URL,并带有代码(如果指定了 state 参数,则以原始形式返回)。
为了获取令牌,需要将 Yandex 返回的 code 参数传递给 getDirectToken($code) 方法。
$token = Yii::$app->direct->getDirectToken($code);
如果发生错误,该方法将返回 false,如果成功获取令牌,则返回包含令牌的字符串。下面将介绍错误处理。
通过此方法获取令牌后,扩展会记住它。如果应用将使用对特定 Yandex.Direct 账户的访问权限,那么最好将令牌保存在某种持久存储中。
API 请求
API 请求通过扩展方法进行,这些方法的名称与 Yandex.Direct API 方法的名称相对应,但以小写字母开头。例如,在 Yandex.Direct API 中有 GetBanners 方法;可以通过扩展方法 getBanners() 向其发送请求。每个方法都可以接受一个 $param 数组,其中包含执行方法所需的数据。对于某些方法,此数组是可选的。$param 的内容在每个 Yandex.Direct API 方法中都有描述。以下是一个使用 GetBanners 方法的 API 请求示例。
$res = Yii::$app->direct->getBanners(array(
'CampaignIDS' => array(100, 101, 123),
'GetPhrases' => 'WithPrices'
));
在成功的情况下,每个方法都会返回来自 Yandex 的响应,或者在发生错误时返回 false。
错误处理
要获取错误信息,可以使用以下方法
-
getError()- 返回错误代码 -
getErrorStr()- 返回错误信息
在从本地存储获取数据时安装用户名和令牌
如果我们自己存储令牌和用户名,那么在开始工作之前,需要将它们传递给扩展,以便能够对API进行查询。为此,存在setLogin和setToken方法。
Yii::$app->direct->setLogin('login')->setToken('token');
支持的方法
目前扩展尚未提供对雅虎直接API所有方法的访问。但已实现大多数方法。尚未实现“广告标记”、“广告图片”、“重新定位”和“金融操作”组中的方法。
我将非常欢迎补充。谢谢。