ไม่สามารถรับ access_token สำหรับ API การแสดงผลพื้นฐานของ Instagram


9

ฉันกำลังพยายามเข้าถึง access_token จาก Instagram เพื่อใช้ Basic Display API ของพวกเขาสำหรับแอปใหม่ (เพียงแสดงทวีตบนหน้าเว็บ)

ฉันทำตามขั้นตอนเหล่านี้: https://developers.facebook.com/docs/instagram-basic-display-api/getting-started

แต่ฉันติดอยู่ที่ขั้นตอนที่ 5: แลกเปลี่ยนรหัสสำหรับโทเค็น

คำขอ cURL ส่งกลับข้อผิดพลาด 400 พร้อมข้อความเสมอ: "ไม่พบรหัสที่ตรงกันหรือถูกใช้ไปแล้ว"

อย่างไรก็ตามหลังจากการทดสอบหลายครั้งฉันได้รับ access_token หนึ่งครั้งเท่านั้น แต่หมดอายุประมาณหนึ่งชั่วโมงต่อมา นี่ดูเหมือนจะสุ่มมาก

API การแสดงผลพื้นฐานของ Instagram ดูเหมือนจะค่อนข้างใหม่ เมื่อไม่นานมานี้ฉันได้ใช้แอพที่สร้างขึ้นบนเว็บไซต์https://www.instagram.com/developer/และเคยทำงาน ตอนนี้ไซต์นี้แสดงข้อความนี้:

อัปเดต: เริ่มตั้งแต่วันที่ 15 ตุลาคม 2019 การลงทะเบียนลูกค้าใหม่และการตรวจสอบการอนุญาตบนแพลตฟอร์ม Instagram API ถูกยกเลิกเพื่อ API การแสดงผลพื้นฐานของ Instagram

... พร้อมลิงก์ไปยัง Developers.facebook.com


คุณสามารถรับโทเค็นการเข้าถึงได้จากที่ใด ฉันยังคงได้รับข้อผิดพลาด 400 เหมือนเดิมแม้ใช้curl
Gianfranco P.

@GianfrancoP คุณพยายามเผยแพร่แอพ Facebook ของคุณหรือยัง (ในคอนโซลนักพัฒนาของ Facebook สำหรับแอพ)
Maxime Freschard

ในที่สุดฉันก็จัดการเพื่อรับโทเค็นการเข้าถึง แอพของฉันใช้งานได้ก่อนหน้านี้ แต่ตอนนี้ฉันกำลังเพิ่มการเข้าสู่ระบบ Instagram ดังนั้นฉันจึงรอการอนุมัติเป็นไม่กี่ชั่วโมงในวันนี้ ฉันจัดการเพื่อให้มันทำงานไม่แน่ใจว่าสิ่งที่ฉันทำผิดอย่างแน่นอน tbh
Gianfranco P.

ตรวจสอบคำตอบของฉันด้วยรหัสบางส่วนที่นี่stackoverflow.com/a/59305113/1474270มันอาจช่วยได้
patJnr

คำตอบ:


3

ฉันเพิ่งประสบความสำเร็จโดยการลบ #_ ท้ายที่ท้ายในรหัสพวกเขาให้คุณ ไม่แน่ใจว่าเป็นปัญหาของคุณหรือไม่

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


สวัสดี @ Emanuel ฉันยังสังเกตเห็นว่ามันใช้งานได้เมื่อลบตัวอักษรต่อท้ายเหล่านี้ แต่ส่วนใหญ่มันไม่ทำงานเลย
Maxime Freschard

3

ฉันมีปัญหานี้เมื่อฉันพยายามใช้แอปพลิเคชัน
ปัญหาของฉันคือรหัสที่สร้างขึ้นเมื่อคุณอนุญาตการอนุญาต
ลองลบ#_ออกจากส่วนท้ายของรหัสที่สร้างและลองสร้างโทเค็นอีกครั้ง

ตัวอย่างเช่นรหัสที่สร้าง: AQBvrqqBJJTM49U1qTQWRMD96oRyMR3B_04JSfjc-nUIi0iGbSc3x_EceggQi9IyG3B3Rj3ocreMThQoPJbPpeXLUM4exJMy4o01fXcRtT_I9NovaNAqmWSneFt3MYv_k7ifAUUeMlC050n5xnjQP6oAvDBfCFQvTdrFaR95-5i71YsfQlmjYWDG6fcWRvOB9nqr6J9mbGMXMi9Y4tKlSfElaYm0YKRijZQDG2B5PaxQ8A #_

รหัสที่สร้างแก้ไข: AQBvrqqBJJTM49U1qTQWRMD96oRyMR3B_04JSfjc-nUIi0iGbSc3x_EceggQi9IyG3B3Rj3ocreMThQoPJbPpeXLUM4exJMy4o01fXcRtT_I9NovaNAqmWSneFt3MYv_k7ifAUUeMlC050n5xnjQP6oAvDBfCFQvTdrFaR95-5i71YsfQlmjYWDG6fcWRvOB9nqr6J9mbGMXMi9Y4tKlSfElaYm0YKRijZQDG2B5PaxQ8A


1

ฉันพยายามใช้เครื่องมือบรรทัดคำสั่งตามเอกสารต้นฉบับ ( https://developers.facebook.com/docs/instagram-basic-display-api/getting-started ) แต่ไม่มีโชค ...

นี่คือสิ่งที่ต้องทำใน 3 ขั้นตอนง่าย ๆ :

  1. สิ่งแรก: ติดตั้งบุรุษไปรษณีย์https://www.postman.com/downloads/
  2. ทำให้คำขอ POST ไปhttps://api.instagram.com/oauth/access_tokenกับพารามิเตอร์ในร่างกายไม่ params ตรวจสอบให้แน่ใจว่าx-www-form-urlencodedเปิดใช้งานตัวเลือกแล้ว
  3. ตอนนี้คุณควรจะได้รับสถานะของ200 OKและการตอบสนองที่มีทั้งและaccess_tokenuser_id
{
    "access_token": "IGQVJYUXlDN...",
    "user_id": 17841400...
}

วันแห่งความสุข!!

ดูภาพหน้าจอสำหรับการตั้งค่าที่ถูกต้อง:

ป้อนคำอธิบายรูปภาพที่นี่


0

ฉันยังมีปัญหาเดียวกันฉันแก้ไขการล้างแคช coockie และข้อมูลเบราว์เซอร์อื่น ๆ

จากนั้นฉันก็ขอใหม่

ลองใช้งานได้กับฉัน


0

ฉันพบวิธีแก้ปัญหา

uri โดยตรงจะต้องเหมือนกับที่คุณใช้ในการเริ่มต้น

อดีต คุณใช้

www.abc.com/auth 

เพื่อรับรหัส เมื่อคุณแลกเปลี่ยนโทเค็น redirect_uri ต้องเหมือนกัน

www.abc.com/auth

0

ฉันใช้ Instagram API เก่าเช่นกัน ฉันต้องเปลี่ยนบางอย่างเพื่อให้โค้ดทำงานบน API ใหม่ ไม่แน่ใจว่าคุณใช้อะไรอยู่นี่คือวิธีที่ฉันใช้กับ 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);

สวัสดี @ ไม่มีใครฉันใช้ PHP ด้วย Guzzle (cURL library) รหัสของฉันคล้ายกับของคุณ มันทำงานครั้งเดียวเมื่อวานนี้ แต่เวลาส่วนใหญ่ของมันไม่ได้ทำงานที่ ...
Maxime Freschard

สวัสดี @ ไม่มีใครทำคุณเรียกapi.instagram.com/oauth/ อนุญาตให้ปลายทางรับรหัสด้วย cURL ได้อย่างไร เมื่อฉันทำอย่างนั้นฉันถูกเปลี่ยนเส้นทางไปที่หน้าเข้าสู่ระบบ Instagram
Maxime Freschard

Maxime คุณไม่ต้องใช้ cURL Instagram รวมถึงรหัสใน URL หลังจากเปลี่ยนเส้นทางไปยังเว็บไซต์ของคุณ คุณสามารถใช้ HTTP GET เพื่อรับรหัส: $ code = $ _GET ['code'];
ไม่มีใคร

-1

ฉันใช้ PHP แต่ไม่ใช้ lib ใด ๆ บางทีนี่อาจช่วยคุณได้

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

หมายเหตุ: $_GET['code']จำเป็นและคุณควรทราบวิธีรับรหัส อ่านที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.