2014-01-16 3 views
1
{ 
    "code":420, 
    "error_type":"OAuthRateLimitException", 
    "error_message":"You have exceeded the maximum number of requests per hour. You have performed a total of 253 requests in the last hour. Our general maximum request limit is set at 30 requests per hour." 
} 

Я просто заметил, что веб-сайт клиентов, которого я ухаживаю, прекратил показывать фид Instagram, поэтому я загрузил URL-адрес канала прямо в браузер, и я получил вышеуказанную ошибку. Я не думаю, что в течение часа должно было быть 253 запросов, но в то время как Googling эта проблема, я столкнулся с кем-то, говоря, что это потому, что API был зарегистрирован в каждом запросе. К сожалению, я «унаследовал» этот код и до сих пор не работал с API-интерфейсом Instagram, кроме исправления ошибки на этом же сайте раньше.Превышено максимальное количество запросов Instagram в час (30)?

Клиентская сайт в WordPress, поэтому я завернул код, чтобы получить изображения в функции:

function get_instagram($user_id=USERID,$count=6,$width=190,$height=190){ 
    $url = 'https://api.instagram.com/v1/users/'.$user_id.'/media/recent/?access_token=ACCESSTOKEN&count='.$count; 

    // Also Perhaps you should cache the results as the instagram API is slow 
    $cache = './'.sha1($url).'.json'; 
    if(file_exists($cache) && filemtime($cache) > time() - 60*60){ 
     // If a cache file exists, and it is newer than 1 hour, use it 
     $jsonData = json_decode(file_get_contents($cache)); 
    } else { 
     $jsonData = json_decode((file_get_contents($url))); 
     file_put_contents($cache,json_encode($jsonData)); 
    } 
    $result = '<a style="background-image:url(/wp-content/themes/iwear/inc/img/instagram-background.jpg);" target="_BLANK" href="http://www.instagr.am" class="lc-box lcbox-4 instagram">'.PHP_EOL.'<ul>'.PHP_EOL; 
    foreach ($jsonData->data as $key=>$value) { 
     $result .= "\t".'<li><img src="'.$value->images->low_resolution->url.'" alt="'.$value->caption->text.'" data-width="'.$width.'" data-height="'.$height.'" /><div class="lc-box-inner"><div class="title"><h2>images</h2></div><div class="description">'.$value->caption->text.'</div></div></li>'.PHP_EOL; 
    } 
    $result .= '</ul></a>'.PHP_EOL; 

    return $result; 
} 

Но, как я уже говорил, этот код перестал работать. Есть ли способ, которым я мог бы оптимизировать это, чтобы на самом деле работать? Я также заметил, есть упоминание о кэше в (вероятно, украденной) Instagram вещи, но это на самом деле не кэширование, так что также может быть решением

Благодаря

+0

Вы пытались использовать кеширование результата в течение 1 часа на вашем сервере? возможно, используя memcache/memcached. Также вы используете любую инфраструктуру с встроенным кэшированием или используете ли вы Instagram api для кэширования? –

+0

lol Я думал, что написал это, просто показывает, что вы можете копировать и вставлять, не изучая, что он делает. http://stackoverflow.com/questions/10231369/dealing-with-instagram-apis-json-php, OP результат должен быть кешем в течение 1 часа, если его не затем проверить права доступа к файлам и что '. ./'.sha1($ url). 'json'; 'можно записать. Также вы должны подумать о переходе на v2 API –

+0

@LozCherone Действительно, это показывает это. Я против copypasting в целом, и, скорее, лучше обойти код, чтобы улучшить себя, но в ситуациях, когда я был отброшен в него предыдущим разработчиком, мне нравится быть как можно более непривлекательным с их решениями. Моя благодарность за консультацию – user2992596

ответ

3

Попробуйте регистрации нового клиента в Instagram и затем изменить

$url = 'https://api.instagram.com/v1/users/'.$user_id.'/media/recent/?access_token=ACCESSTOKEN&count='.$count;

для

$url = https://api.instagram.com/v1/users/'.$user_id.'/media/recent/?client_id=CLIENT_ID&count='.$count;

где CLIENT_ID - это идентификатор клиента вашего недавно созданного клиента.

Смежные вопросы