Không thể có được access_token cho API hiển thị cơ bản của Instagram


9

Tôi đang cố gắng truy cập access_token từ Instagram để sử dụng API hiển thị cơ bản của họ cho một ứng dụng mới (chỉ đơn giản là hiển thị các tweet trên trang web).

Tôi đã làm theo các bước sau: https://developers.facebook.com/docs/instagram-basic-display-api/getting-started

Nhưng tôi bị kẹt ở Bước 5: Đổi mã lấy mã thông báo

Yêu cầu cURL luôn trả về lỗi 400 với thông báo: "Không tìm thấy mã trùng khớp hoặc đã được sử dụng"

Tuy nhiên, sau nhiều thử nghiệm, tôi chỉ nhận được access_token một lần, nhưng nó đã hết hạn khoảng một giờ sau đó. Điều này dường như là rất ngẫu nhiên.

API hiển thị cơ bản của Instagram có vẻ khá mới. Cách đây một thời gian, tôi đã sử dụng các ứng dụng được tạo trên trang web https://www.instagram.com/developer/ và nó được sử dụng để hoạt động. Bây giờ trang web này hiển thị thông báo này:

CẬP NHẬT: Bắt đầu từ ngày 15 tháng 10 năm 2019, đăng ký khách hàng mới và xem xét cấp phép trên nền tảng API Instagram bị ngừng sử dụng để ủng hộ API hiển thị cơ bản của Instagram.

... Với một liên kết đến nhà phát triển.facebook.com.


nơi bạn có thể nhận được mã thông báo truy cập? Tôi liên tục nhận được 400 lỗi tương tự ngay cả khi sử dụngcurl
Gianfranco P.

@GianfrancoP. bạn đã thử xuất bản ứng dụng Facebook của mình chưa? (trong bảng điều khiển dành cho Nhà phát triển của Facebook dành cho Ứng dụng)
Maxime Freschard

Cuối cùng tôi đã quản lý để có được mã thông báo truy cập. Ứng dụng của tôi đã được phát hành trước đây nhưng bây giờ tôi đang thêm đăng nhập Instagram vì vậy tôi đang chờ phê duyệt kể từ vài giờ hôm nay. Tôi đã xoay sở để làm cho nó hoạt động, không chắc chính xác những gì tôi đã làm sai, tbh
Gianfranco P.

Kiểm tra câu trả lời của tôi với một số mã ở đây stackoverflow.com/a/59305113/1474270 nó có thể giúp
patJnr

Câu trả lời:



3

Tôi đã có vấn đề này khi tôi đang cố gắng thực hiện một ứng dụng.
Vấn đề của tôi là mã được tạo khi bạn cho phép các quyền.
Hãy thử xóa #_ khỏi cuối mã được tạo và thử tạo lại mã thông báo

Tạo mã ví dụ: AQBvrqqBJJTM49U1qTQWRMD96oRyMR3B_04JSfjc-nUIi0iGbSc3x_EceggQi9IyG3B3Rj3ocreMThQoPJbPpeXLUM4exJMy4o01fXcRtT_I9NovaNAqmWSneFt3MYv_k7ifAUUeMlC050n5xnjQP6oAvDBfCFQvTdrFaR95-5i71YsfQlmjYWDG6fcWRvOB9nqr6J9mbGMXMi9Y4tKlSfElaYm0YKRijZQDG2B5PaxQ8A #_

Mã được tạo chỉnh sửa: AQBvrqqBJJTM49U1qTQWRMD96oRyMR3B_04JSfjc-nUIi0iGbSc3x_EceggQi9IyG3B3Rj3ocreMThQoPJbPpeXLUM4exJMy4o01fXcRtT_I9NovaNAqmWSneFt3MYv_k7ifAUUeMlC050n5xnjQP6oAvDBfCFQvTdrFaR95-5i71YsfQlmjYWDG6fcWRvOB9nqr6J9mbGMXMi9Y4tKlSfElaYm0YKRijZQDG2B5PaxQ8A


1

Tôi đã thử sử dụng công cụ dòng lệnh theo các tài liệu gốc ( https://developers.facebook.com/docs/instagram-basic-display-api/getting-started ), nhưng không may mắn ...

Đây là những việc cần làm trong 3 bước đơn giản:

  1. Điều đầu tiên: Cài đặt Postman https://www.postman.com/doads/
  2. Thực hiện một yêu cầu POST https://api.instagram.com/oauth/access_tokenvới các tham số trong thân, KHÔNG phải là params. Hãy chắc chắn rằng x-www-form-urlencodedtùy chọn được kích hoạt.
  3. Bây giờ bạn sẽ nhận được trạng thái 200 OKvà phản hồi với cả hai access_tokenuser_id.
{
    "access_token": "IGQVJYUXlDN...",
    "user_id": 17841400...
}

Những ngày hạnh phúc!!

Xem ảnh chụp màn hình để biết các cài đặt chính xác:

nhập mô tả hình ảnh ở đây


0

Tôi cũng gặp vấn đề tương tự, tôi đã giải quyết xóa bộ nhớ cache, coockie và dữ liệu trình duyệt khác.

Sau đó tôi đưa ra một yêu cầu mới.

Hãy thử nó, nó đã làm việc với tôi.


0

Tôi tìm thấy giải pháp.

Uri trực tiếp phải giống như bạn sử dụng lúc đầu.

Ví dụ. Bạn sử dụng

www.abc.com/auth 

để lấy mã Khi bạn trao đổi mã thông báo, redirect_uri phải giống như

www.abc.com/auth

0

Tôi cũng đang sử dụng API Instagram cũ. Tôi đã phải thay đổi một số thứ để làm cho mã của tôi hoạt động trên API mới. Không chắc chắn những gì bạn đang sử dụng, đây là cách tôi đã làm với 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);

Xin chào @Nobody, tôi cũng đang sử dụng PHP với Guheads (thư viện cURL). Mã của tôi tương tự như của bạn. Nó đã hoạt động một lần vào ngày hôm qua, nhưng hầu hết thời gian nó không hoạt động ...
Maxime Freschard

Xin chào @Nobody, làm thế nào để bạn gọi api.instagram.com/oauth/authorize endpoint để lấy mã bằng cURL? Khi tôi làm điều đó tôi được chuyển hướng đến trang đăng nhập Instagram.
Maxime Freschard

Tối đa, bạn không phải sử dụng cURL. Instagram bao gồm mã trong URL sau khi nó chuyển hướng đến trang web của bạn. Bạn có thể sử dụng HTTP GET để nhận mã: $ code = $ _GET ['code'];
Không ai vào

-1

Tôi đang sử dụng PHP nhưng không sử dụng bất kỳ lib. Có lẽ cái này giúp bạn.

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

LƯU Ý: $_GET['code']là bắt buộc và bạn nên biết cách lấy mã. Đọc ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.