Tidak mungkin mendapatkan access_token untuk Instagram Basic Display API


9

Saya mencoba untuk mendapatkan access_token dari Instagram untuk menggunakan API Tampilan Dasar mereka untuk aplikasi baru (cukup tampilkan tweet di halaman web).

Saya mengikuti langkah-langkah ini: https://developers.facebook.com/docs/instagram-basic-display-api/getting-started

Tapi saya terjebak di Langkah 5: Tukarkan Kode untuk Token

Permintaan CURL selalu menghasilkan kesalahan 400 dengan pesan: "Kode yang cocok tidak ditemukan atau sudah digunakan"

Namun, setelah banyak tes, saya mendapat access_token hanya sekali, tetapi berakhir sekitar satu jam kemudian. Ini tampaknya sangat acak.

API Tampilan Dasar Instagram tampaknya agak baru. Beberapa waktu lalu, saya telah menggunakan aplikasi yang dibuat di situs web https://www.instagram.com/developer/ dan berfungsi dengan baik. Sekarang situs ini menampilkan pesan ini:

UPDATE: Mulai 15 Oktober 2019, pendaftaran klien baru dan tinjauan izin pada platform Instagram API dihentikan demi API Tampilan Dasar Instagram.

... dengan tautan ke developers.facebook.com.


di mana Anda bisa mendapatkan token akses? Saya terus mendapatkan 400 kesalahan yang sama bahkan menggunakancurl
Gianfranco P.

@GianfrancoP. Sudahkah Anda mencoba menerbitkan aplikasi Facebook Anda? (di konsol Pengembang Facebook untuk Aplikasi)
Maxime Freschard

Saya akhirnya berhasil mendapatkan token akses. Aplikasi saya sudah tayang sebelumnya, tetapi sekarang saya menambahkan login Instagram, jadi saya menunggu persetujuan beberapa jam hari ini. Saya berhasil membuatnya bekerja, tidak yakin apa yang saya lakukan salah, tbh
Gianfranco P.

Periksa jawaban saya dengan beberapa kode di sini stackoverflow.com/a/59305113/1474270 mungkin membantu
patJnr

Jawaban:



3

Saya memiliki masalah ini ketika saya mencoba mengimplementasikan aplikasi.
Masalah saya adalah kode yang dihasilkan saat Anda mengizinkan izin.
Cobalah untuk menghapus #_ dari akhir kode yang dihasilkan dan coba buat token lagi

Kode yang dihasilkan misalnya: AQBvrqqBJJTM49U1qTQWRMD96oRyMR3B_04JSfjc-nUIi0iGbSc3x_EceggQi9IyG3B3Rj3ocreMThQoPJbPpeXLUM4exJMy4o01fXcRtT_I9NovaNAqmWSneFt3MYv_k7ifAUUeMlC050n5xnjQP6oAvDBfCFQvTdrFaR95-5i71YsfQlmjYWDG6fcWRvOB9nqr6J9mbGMXMi9Y4tKlSfElaYm0YKRijZQDG2B5PaxQ8A #_

Kode yang dihasilkan diedit: AQBvrqqBJJTM49U1qTQWRMD96oRyMR3B_04JSfjc-nUIi0iGbSc3x_EceggQi9IyG3B3Rj3ocreMThQoPJbPpeXLUM4exJMy4o01fXcRtT_I9NovaNAqmWSneFt3MYv_k7ifAUUeMlC050n5xnjQP6oAvDBfCFQvTdrFaR95-5i71YsfQlmjYWDG6fcWRvOB9nqr6J9mbGMXMi9Y4tKlSfElaYm0YKRijZQDG2B5PaxQ8A


1

Saya mencoba menggunakan alat baris perintah sesuai dengan dokumen asli ( https://developers.facebook.com/docs/instagram-basic-display-api/getting-started ), tetapi tidak berhasil ...

Inilah yang harus dilakukan dalam 3 langkah mudah:

  1. Hal pertama: Instal Postman https://www.postman.com/downloads/
  2. Buat permintaan POST https://api.instagram.com/oauth/access_tokendengan parameter di tubuh, BUKAN params. Pastikan bahwax-www-form-urlencoded opsi ini diaktifkan.
  3. Anda sekarang harus mendapatkan status 200 OKdan tanggapan dengan keduanya access_tokendan user_id.
{
    "access_token": "IGQVJYUXlDN...",
    "user_id": 17841400...
}

Hari-hari bahagia!!

Lihat tangkapan layar untuk pengaturan yang benar:

masukkan deskripsi gambar di sini


0

Saya juga mengalami masalah yang sama, saya menyelesaikan pembersihan cache, coockie dan data browser lainnya.

Lalu saya membuat permintaan baru.

Cobalah, itu berhasil dengan saya.


0

Saya menemukan solusinya.

Uri langsung harus sama dengan yang Anda gunakan di awal.

ex. Kau gunakan

www.abc.com/auth 

untuk mendapatkan kodenya. Saat Anda menukar token, redirect_uri harus sama dengan

www.abc.com/auth

0

Saya juga menggunakan API Instagram lama. Saya harus mengubah beberapa hal agar kode saya berfungsi di API baru. Tidak yakin apa yang Anda gunakan, ini adalah bagaimana saya melakukannya dengan PHP.

$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);

Hai @Tidak ada, saya juga menggunakan PHP dengan Guzzle (cURL library). Kode saya mirip dengan milik Anda. Ini berfungsi sekali kemarin, tetapi sebagian besar waktu itu tidak berhasil ...
Maxime Freschard

Hai @Nobody, bagaimana Anda memanggil titik akhir api.instagram.com/oauth/authorize untuk mendapatkan kode dengan cURL? Ketika saya melakukan itu, saya diarahkan ke halaman login Instagram.
Maxime Freschard

Maxime, Anda tidak harus menggunakan CURL. Instagram menyertakan kode dalam URL setelah diarahkan ke situs Anda. Anda dapat menggunakan HTTP DAPATKAN untuk mengambil kode: $ code = $ _GET ['code'];
Tidak ada yang

-1

Saya menggunakan PHP tetapi tanpa menggunakan lib. Mungkin yang ini membantu Anda.

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'];

CATATAN: $_GET['code']diperlukan dan Anda harus tahu cara mendapatkan kode. Baca di sini

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.