Instagram Temel Ekran API'sı için erişim_konusu almak imkansız


9

Yeni bir uygulama için temel görüntüleme API'larını kullanmak için Instagram'dan bir access_token almaya çalışıyorum (sadece bir web sayfasında tweet'leri görüntüleyin).

Şu adımları izledim: https://developers.facebook.com/docs/instagram-basic-display-api/getting-started

Ama 5. Adımda takılı kaldım: Kodu bir Jetonla Değiştirme

CURL isteği her zaman şu iletiyle 400 hatası döndürür: "Eşleme kodu bulunamadı veya zaten kullanılmış"

Ancak, birçok testten sonra, sadece bir kez access_token aldım, ancak yaklaşık bir saat sonra sona erdi. Bu çok rastgele görünüyor.

Instagram Temel Ekran API'sı oldukça yeni görünüyor. Bir süre önce, https://www.instagram.com/developer/ web sitesinde oluşturulan uygulamaları kullandım ve işe yaradı. Şimdi bu site şu mesajı gösteriyor:

GÜNCELLEME: 15 Ekim 2019'dan itibaren Instagram API platformunda yeni müşteri kaydı ve izin incelemesi, Instagram Basic Display API lehine durduruldu.

... developers.facebook.com bağlantısıyla.


erişim kodunu nereden edinebilirsiniz? Kullanırken bile aynı 400 hatasını alıyorumcurl
Gianfranco P.

@GianfrancoP. Facebook uygulamanızı yayınlamaya çalıştınız mı? (Uygulamalar için Facebook Geliştiricileri konsolunda)
Maxime Freschard

Sonunda erişim kodunu almayı başardım. Uygulamam daha önce yayınlanmıştı ama şimdi Instagram girişi ekliyorum, bu yüzden bugün birkaç saatten beri onay bekliyorum. Çalışmayı başardım, tam olarak neyi yanlış yaptığımdan emin değilim, tbh
Gianfranco P.

Cevabımı burada bazı kod ile kontrol edin stackoverflow.com/a/59305113/1474270 yardımcı olabilir
patJnr

Yanıtlar:



3

Bir uygulamayı uygulamaya çalışırken bu sorunu yaşadım.
Benim sorun izinleri izin oluşturulan kod oldu. #_ kodunu üretilen kodun sonundan
kaldırmayı ve jetonu tekrar oluşturmayı deneyin

Oluşturulan kod örneği: AQBvrqqBJJTM49U1qTQWRMD96oRyMR3B_04JSfjc-nUIi0iGbSc3x_EceggQi9IyG3B3Rj3ocreMThQoPJbPpeXLUM4exJMy4o01fXcRtT_I9NovaNAqmWSneFt3MYv_k7ifAUUeMlC050n5xnjQP6oAvDBfCFQvTdrFaR95-5i71YsfQlmjYWDG6fcWRvOB9nqr6J9mbGMXMi9Y4tKlSfElaYm0YKRijZQDG2B5PaxQ8A #_

Oluşturulan kod düzenlendi: AQBvrqqBJJTM49U1qTQWRMD96oRyMR3B_04JSfjc-nUIi0iGbSc3x_EceggQi9IyG3B3Rj3ocreMThQoPJbPpeXLUM4exJMy4o01fXcRtT_I9NovaNAqmWSneFt3MYv_k7ifAUUeMlC050n5xnjQP6oAvDBfCFQvTdrFaR95-5i71YsfQlmjYWDG6fcWRvOB9nqr6J9mbGMXMi9Y4tKlSfElaYm0YKRijZQDG2B5PaxQ8A


1

Orijinal dokümanlara göre komut satırı aracını kullanmayı denedim ( https://developers.facebook.com/docs/instagram-basic-display-api/getting-started ), ancak şans yok ...

3 kolay adımda yapmanız gerekenler:

  1. İlk şey: Postman'ı yükleyin https://www.postman.com/downloads/
  2. https://api.instagram.com/oauth/access_tokenParametreleri DEĞİL , vücuttaki parametrelerle bir POST isteği yapın . x-www-form-urlencodedSeçeneğin etkin olduğundan emin olun .
  3. Artık durumunu almalısınız 200 OKve her ikisi ile bir yanıt access_tokenve user_id.
{
    "access_token": "IGQVJYUXlDN...",
    "user_id": 17841400...
}

Mutlu günler!!

Doğru ayarlar için ekran görüntüsüne bakın:

resim açıklamasını buraya girin


0

Aynı sorunu yaşıyordum, önbellek, coockie ve diğer tarayıcı verilerini temizlemeyi çözdüm.

Sonra yeni bir istekte bulundum.

Deneyin, benimle çalıştı.


0

Çözümü buldum.

Doğrudan uri başlangıçta kullandığınız ile aynı olmalıdır.

ex. Kullan

www.abc.com/auth 

kodu almak için. Simgeyi değiştirdiğinizde, redirect_uri ile aynı olmalıdır

www.abc.com/auth

0

Eski Instagram API'sını da kullanıyordum. Kodumu yeni API'da çalıştırmak için birkaç şeyi değiştirmek zorunda kaldım. Ne kullandığınızdan emin değilim, bu PHP ile nasıl yaptım.

$url = 'https://api.instagram.com/oauth/access_token';

$fields = array(
    'app_id' => 'YOUR_APP_ID',
    'app_secret' => 'YOUR_APP_SECRET_ID',
    'grant_type' => 'authorization_code',
    'redirect_uri' => 'YOUR_REDIRECT_URL',
    'code' => $code
);

$ch = curl_init();

curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_VERIFYPEER, false);

$result = curl_exec($ch);
curl_close($ch);

//get the access token from the string sent from Instagram
$splitString = explode('"access_token":', $result);
$removeRest = explode(',', $splitString[1]);
$withSpace = str_replace('"','', $removeRest[0]);
$access_token = str_replace(' ','', $withSpace);

Merhaba @Hayır, PHP de Guzzle (cURL kütüphanesi) ile kullanıyorum. Kodum sizinkine benzer. Dün bir kez çalıştı, ama çoğu zaman işe yaramıyor ...
Maxime Freschard

Merhaba @Herkes, cURL ile kod almak için api.instagram.com/oauth/authorize uç noktasını nasıl arayabilirsin ? Bunu yaptığımda Instagram giriş sayfasına yönlendirildim.
Maxime Freschard

Maxime, cURL kullanmana gerek yok. Instagram, sitenize yönlendirildikten sonra URL'deki kodu içerir. Kodu almak için HTTP GET'i kullanabilirsiniz: $ code = $ _GET ['code'];
Kimse

-1

PHP kullanıyorum ama herhangi bir lib kullanmadan. Belki bu sana yardım eder.

curl.php

class InstagramApi 
{

public function GetAccessToken($client_id, $redirect_uri, $client_secret, $code) {      
    $url = 'https://api.instagram.com/oauth/access_token';

    $curlPost = 'app_id='. $client_id . '&redirect_uri=' . $redirect_uri . '&app_secret=' . $client_secret . '&code='. $code . '&grant_type=authorization_code';
    $ch = curl_init();      
    curl_setopt($ch, CURLOPT_URL, $url);        
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, 1);      
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);            
    $data = json_decode(curl_exec($ch), true);  
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
    curl_close($ch);    

    if($http_code != '200')         
        throw new Exception('Error : Failed to receieve access token');

    return $data;

  }

index.php

include "curl.php";
include "instagram_keys.php"; // holding APP ID, SECRET KEY, REDIRECT URI

 $instagram_ob = new InstagramApi();
 $insta_data = $instagram_ob->GetAccessToken(INSTAGRAM_CLIENT_ID, INSTAGRAM_REDIRECT_URI, INSTAGRAM_CLIENT_SECRET, $_GET['code']);  
  echo  $insta_data['access_token'];
  echo  $insta_data['user_id'];

NOT: $_GET['code']gereklidir ve kodu nasıl alacağınızı bilmelisiniz. Burayı oku

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.