Помогите с json

12 3
J
На сайте с 08.06.2006
Offline
844
2133

<?php


$access_id = '9dEOYqb3sEmwKG9';
$private_key = 'u2bZIGvCJXxieTI';


$data = array("grant_type=client_credentials&client_id=".$private_key."&client_secret=".$access_id."");


if( $curl = curl_init() ) {
curl_setopt($curl, CURLOPT_URL, 'http://target.my.com/api/v2/oauth2/token.json');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
$out = curl_exec($curl);
echo $out;
curl_close($curl);
}


?>

что я тут сделал не правильно?

Задача

Чтобы получить access-токен, нужно послать запрос вида:

POST /api/v2/oauth2/token.json HTTP/1.1
Host: target.my.com
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials&client_id={client_id}&client_secret={client_secret}
В случае успешного выполнения ответ будет выглядеть следующим образом:

HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8

{
"access_token": "{access_token}",
"token_type": "bearer",
"scope": "{scope}",
"expires_in": "86400",
"refresh_token": "{refresh_token}"
}
Оптимизайка
На сайте с 11.03.2012
Offline
396
#1
joost:
что я тут сделал не правильно?

curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
J
На сайте с 08.06.2006
Offline
844
#2
Оптимизайка:
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));

все равно выдает

302 Found

nginx

Оптимизайка
На сайте с 11.03.2012
Offline
396
#3

302 это нормально, переадресация. Чтобы автоматически обрабатывать её, надо добавить

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);

siv1987
На сайте с 02.04.2009
Offline
427
#4
joost:
CURLOPT_POSTFIELDS,*json_encode($data)

$data должна быть либо строкой запроса, либо array в виде $key => $value.

$data = "grant_type=client_credentials&client_id=".$private_key."&client_secret=".$access_id;
J
На сайте с 08.06.2006
Offline
844
#5

все поправил и получаю ""Method not allowed""

katenuha
На сайте с 13.06.2013
Offline
149
#6
joost:
все поправил и получаю ""Method not allowed""

Что не понятно в данной строке? Вы используете несуществующий метод.

Адаптирую Ваш сайт под мобильные устройства. (/ru/forum/946260) за 1 день.
J
На сайте с 08.06.2006
Offline
844
#7

token.json ?

так в доках https://github.com/wreckah/target_api/blob/master/doc/oauth2.md

Client Credentials Grant

J
На сайте с 08.06.2006
Offline
844
#8

так нужно было через https

получил уже access-токен

Далее, полученный access-токен можно использовать при отправке запросов к API target.my.com:

GET /api/v2/campaigns.json HTTP/1.1

Host: target.my.com

Authorization: Bearer {access_token}

GET /api/v2/campaigns.json HTTP/1.1

Host: target.my.com

это

curl_setopt($curl, CURLOPT_URL, 'http://target.my.com/api/v2/campaigns.json');

как в пхп скрипте записать Authorization: Bearer {access_token} ?

ДП
На сайте с 23.11.2009
Offline
203
#9
J
На сайте с 08.06.2006
Offline
844
#10

$acces_token = 'g3EOq713MbCfM7N9lHMgZi7nXqkHK3IehtImZJM4288DLN3FBKkJvdieVeZXJ7EuoVIuWJIZklAgoAOPH3kaUH8J'; //выдуманный



$data = array(
'name' => 'Test campaign',
'package' => array('id' => $package['id']),
'targetings' => array(
'regions' => array(188),
'sex' => 'MF',
'age' => array(20, 21),
'pads' => array(1, 2, 3),
)
);

$heans[] = 'Authorization: Bearer '.$acces_token;

if( $curl = curl_init() ) {
curl_setopt($curl, CURLOPT_URL, 'https://target.my.com/api/v1/campaigns.json');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, $heads);
$out = curl_exec($curl);
print_r ($out);
curl_close($curl);

в ответ

Referer checking failed - no Referer.

какой еще рефер ему нужен?

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий