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.

Maxime Freschard
sumber
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 baru saja berhasil dengan menghapus trailing #_ di akhir kode yang mereka berikan kepada Anda. Tidak yakin apakah itu masalah Anda?

https://developers.facebook.com/support/bugs/436837360282557/

Emmanuel
sumber
Hai @ Emmanuel, saya juga memperhatikan bahwa itu berhasil ketika menghapus karakter-karakter tambahan ini. Tetapi sebagian besar waktu itu tidak berhasil sama sekali.
Maxime Freschard
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

Rômulo Milani
sumber
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

Anas
sumber
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.

Ueslen Santos
sumber
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
JackWu
sumber
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);
Tak seorangpun
sumber
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

Navbro
sumber