Google Shortner Issue

Итак, у меня есть небольшой скрипт PHP для генерации коротких ссылок, он работает, но иногда я получаю эту ошибку:

Неопределенное свойство: stdClass :: $ id «,» file «: ShortLink.php», «line»: 31

Это мой сценарий:

<?php

class ShortLink {

public static function generateShortLink($longUrl)
{
//This is the URL you want to shorten
$apiKey = 'MY_API_KEY';
//Get API key from : http://code.google.com/apis/console/

$postData = array('longUrl' => $longUrl, 'key' => $apiKey);
$jsonData = json_encode($postData);

$curlObj = curl_init();

curl_setopt($curlObj, CURLOPT_URL, 'https://www.googleapis.com/urlshortener/v1/url');
curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curlObj, CURLOPT_HEADER, 0);
curl_setopt($curlObj, CURLOPT_HTTPHEADER, array('Content-type:application/json'));
curl_setopt($curlObj, CURLOPT_POST, 1);
curl_setopt($curlObj, CURLOPT_POSTFIELDS, $jsonData);

$response = curl_exec($curlObj);

//change the response json string to object
$json = json_decode($response);

curl_close($curlObj);

return $json->id;
}

}

Когда я начал работать с этим сценарием 6 или 7 месяцев назад, у меня не было этой ошибки, но теперь я начинаю получать ее, и я понятия не имею, почему, поэтому, пожалуйста, если у кого-то есть идея, я буду очень признателен.

Обновить :
Когда я vardump мой $json я понимаю :

{ ["domain"]=> string(11) "usageLimits" ["reason"]=> string(26) "userRateLimitExceededUnreg" ["message"]=> string(40) "User Rate Limit Exceeded. Please sign up" ["extendedHelp"]=> string(36) "https://code.google.com/apis/console" } } ["code"]=> int(403) ["message"]=> string(40) "User Rate Limit Exceeded. Please sign up" }}

Так что я подумал, ограничил ли Google услугу сокращения Google?

0

Решение

class ShortLink {
public static function generateShortLink($longUrl)
{
//This is the URL you want to shorten
$apiKey = 'YOUR_SERVER_API_KEY';
//Get API key from : http://code.google.com/apis/console/

$postData = array('longUrl' => $longUrl, 'key' => $apiKey);
$jsonData = json_encode($postData);

$curlObj = curl_init();

curl_setopt($curlObj, CURLOPT_URL, 'https://www.googleapis.com/urlshortener/v1/url');
curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curlObj, CURLOPT_HEADER, 0);
curl_setopt($curlObj, CURLOPT_HTTPHEADER, array('Content-type:application/json'));
curl_setopt($curlObj, CURLOPT_POST, 1);
curl_setopt($curlObj, CURLOPT_POSTFIELDS, $jsonData);

$response = curl_exec($curlObj);

//change the response json string to object
$json = json_decode($response);

curl_close($curlObj);
if(!is_object($json))
{
return(false);
}
return $json->id;
}

}
$api = new ShortLink();
$shorturlid=$api->generateShortLink('http://avecsrthgdgnb.avcd');
echo $shorturlid;

Вы используете новую консоль, затем включите URL Shortener API.

1

Другие решения

Иногда из-за сетевого curl не возвращается с ответом в течение 30 секунд (ограничение по умолчанию в php для cmd до конца)

Попробуйте изменить ограничение по времени в php.ini или если оно не находится под вашим контролем, или вы не хотите изменять его для всех попыток php bool set_time_limit ( int $seconds ) перед звонком curl_exec

Обновить:

Я вижу, что в json нет поля id, которое возвращается.

{ ["domain"]=> string(11) "usageLimits"["reason"]=> string(26) "userRateLimitExceededUnreg"["message"]=> string(40) "User Rate Limit Exceeded. Please sign up"["extendedHelp"]=> string(36) "https://code.google.com/apis/console"}
}
["code"]=> int(403)
["message"]=> string(40) "User Rate Limit Exceeded. Please sign up"}
}

И если вы внимательно посмотрите, был достигнут лимит вашего пользователя Посмотреть здесь Для получения подробной информации об ограничении использования Google API. (Вы можете попробовать другой IP, то есть другой компьютер или другой ключ API, и один и тот же код может начать работать).

Надеюсь это поможет

0

По вопросам рекламы [email protected]