Xác thực người dùng thử {{error error_type


18

Tôi đang cố gắng khôi phục mã thông báo truy cập thông qua API hiển thị cơ bản của Instagram nhưng khi cố gắng xác thực người dùng thử nghiệm, tôi gặp lỗi này:

{
    "error_type": "OAuthException",
    "code": 400,
    "error_message": "Invalid platform app"
}

Tôi hy vọng sẽ thấy màn hình ủy quyền ứng dụng


Bạn đã bao giờ tìm ra giải pháp cho việc này? Im có cùng một vấn đề.
MontyTheMack

Câu trả lời:


27

Felice!

Khi thiết lập ứng dụng Instagram, bạn nên sử dụng ID ứng dụng cụ thể của nền tảng chứ không phải cài đặt chung trên Facebook.

Trong Bảng điều khiển ứng dụng Facebook của bạn, hãy truy cập Products > Instagram > Basic Displayvà sẽ thấy ID ứng dụng Instagram .

Sử dụng nó trong URL ủy quyền của bạn và nó sẽ hoạt động.


Bạn đã bao giờ tìm ra giải pháp cho việc này? Im có cùng một vấn đề.
MontyTheMack

4
Tôi đang sử dụng ID ứng dụng Instagram và nó vẫn báo lỗi này.
MontyTheMack

1
Tương tự ở đây. Tôi nhận thấy rằng bất kỳ tham số nào bạn đặt trên [ api.instagram.com/oauth/access_token/] , nó sẽ gây ra lỗi! Có lẽ một điểm cuối xấu? Trong mọi trường hợp, tôi đã theo dõi từng bước từng bước được đề cập trên [ developers.facebook.com/docs/instagram-basic-display-api/ , và tất cả đều hoạt động hoàn hảo cho đến Bước 5: Trao đổi mã cho mã thông báo nơi tôi sử dụng người đưa thư để gọi [ api.instagram.com/oauth/access_token/] với các tham số client_id, client_secret, Grant_type, redirect_uri và mã (được truy xuất sau khi ủy quyền thành công) . nhưng thất bại
DingDong

6
Tôi gặp vấn đề tương tự Tôi đã thực hiện thử nghiệm với người đưa thư với việc truyền các tham số qua phần thân và thiết lập x-www-form-urlencoding, nó hoạt động như một con tắc
Michael de Menten

6

Truyền tham số qua phần thân và trong x-www-form-urlencoding hoạt động tốt như bạn có thể thấy trong hình bên dưới nhập mô tả hình ảnh ở đây


1
đúng, điều này đã làm việc hoàn toàn tốt
ĐinhDong

Nó không hoạt động với tôi
Nikunj

1
cảm ơn bạn đã thực sự giúp tôi :)
BartK_97

2

Tôi gặp vấn đề tương tự và có thể giải quyết bằng cách đặt loại nội dung của yêu cầu thành application / x-www-form-urlencoding. bên dưới là ví dụ ac # chỉ ra cách thực hiện yêu cầu:

public async Task<UserTokenResponseModel> GetUserToken(string code)
    {
        var url =
            $"https://api.instagram.com/oauth/access_token";

        var request = new HttpRequestMessage(HttpMethod.Post, url);

        var client = _httpClientFactory.CreateClient();

        var requestContent = new List<KeyValuePair<string, string>>();
        requestContent.Add(new KeyValuePair<string, string>("client_id", ClientId));
        requestContent.Add(new KeyValuePair<string, string>("client_secret", Secret));
        requestContent.Add(new KeyValuePair<string, string>("grant_type", "authorization_code"));
        requestContent.Add(new KeyValuePair<string, string>("code", code));
        requestContent.Add(new KeyValuePair<string, string>("redirect_uri", "https://localhost:44315/instagram/authorizecallback"));

        request.Content = new FormUrlEncodedContent(requestContent);

        var response = await client.SendAsync(request);
        var content = await response.Content.ReadAsStringAsync();

        if (!response.IsSuccessStatusCode)
        {
            throw new Exception(content);
        }

        return JsonConvert.DeserializeObject<UserTokenResponseModel>(content);
    }

1

Như đã đề cập trong câu trả lời khác, vấn đề là ở phần thân biểu mẫu được cho là gửi ở định dạng x-www-form-urlencoding . Nó đã làm việc tốt với tôi trong postman nhưng để thực hiện tương tự trong góc là hơi điển hình. Ở đây, phần thân yêu cầu bài đăng trước tiên phải được chuyển đổi theo định dạng HttpParams và sau đó chuyển sang tham số 'body' của yêu cầu bài viết dưới dạng chuỗi như thế này ..

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';

@Injectable({
  providedIn: 'root'
})
export class appService {

  constructor(private http: HttpClient) { }

  public getInstaAccessToken(formData) {
    let full_url = "https://api.instagram.com/oauth/access_token";
    let body = new HttpParams()
      .set("client_id" , "YOUR_CLIENT_ID")
      .set("client_secret","YOUR_CLIENT_SECRET")
      .set("code","code received from redirect url")
      .set("grant_type","authorization_code")
      .set("redirect_uri","your redirect uri")
    const requestOptions = {
      headers: new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded')
    }
    return this.http.post(full_url, body.toString(), requestOptions).subscribe(data=>{
      console.log(data);
      /* 
        {
          "access_token": "IGQVJ...",
          "user_id": 17841405793187218
        }
      */
    })
  }

}
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.