Otentikasi Pengguna Tes {"error_type": "OAuthException", "code": 400, "error_message": "Aplikasi platform tidak valid"}

18

Saya mencoba memulihkan token akses melalui Instagram Basic Display API tetapi ketika mencoba untuk mengotentikasi pengguna tes saya mendapatkan kesalahan ini:

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

Saya berharap untuk melihat layar otorisasi aplikasi

Felice Caricati
sumber
Apakah Anda pernah menemukan solusi untuk ini? Saya mempunyai masalah yang sama.
MontyTheMack

Jawaban:

27

Felice!

Saat menyiapkan aplikasi Instagram, Anda harus menggunakan ID Aplikasi khusus platform dan bukan yang umum dibuat di Facebook.

Di Dashboard aplikasi Facebook Anda, buka Products > Instagram > Basic Displaydan harus melihat ID Aplikasi Instagram .

Gunakan itu di URL otorisasi Anda dan itu akan berfungsi.

Filipe V
sumber
Apakah Anda pernah menemukan solusi untuk ini? Saya mempunyai masalah yang sama.
MontyTheMack
4
Saya menggunakan ID aplikasi Instagram dan masih memberikan kesalahan ini.
MontyTheMack
1
Sama disini. Saya perhatikan bahwa parameter apa pun yang Anda masukkan ke [ api.instagram.com/oauth/access_token/] , itu akan menimbulkan kesalahan! Mungkin titik akhir yang buruk? Bagaimanapun, saya telah mengikuti semua langkah demi langkah yang disebutkan di [ developers.facebook.com/docs/instagram-basic-display-api/… dan semuanya bekerja dengan baik sampai Langkah 5: Tukarkan Kode untuk Token tempat saya kemudian menggunakan tukang pos untuk memanggil [ api.instagram.com/oauth/access_token/] dengan parameter client_id, client_secret, grant_type, redirect_uri dan kode (diambil setelah otorisasi berhasil) . tetapi gagal
DingDong
6
Saya memiliki masalah yang sama ketika saya melakukan tes dengan tukang pos dengan melewati parameter melalui tubuh dan pengaturan x-www-form-urlencoded, itu bekerja seperti cham
Michael de Menten
6

Melewati parameter melalui body dan di x-www-form-urlencoded berfungsi dengan baik seperti yang Anda lihat pada gambar di bawah ini masukkan deskripsi gambar di sini

Michael de Menten
sumber
1
benar, ini bekerja dengan sangat baik
DingDong
Ini tidak berfungsi untuk saya
Nikunj
1
terima kasih Anda benar-benar membantu saya :)
BartK_97
2

Saya memiliki masalah serupa dan dapat menyelesaikannya dengan mengatur jenis konten dari permintaan ke application / x-www-form-urlencoded. di bawah ini adalah ac # contoh yang menunjukkan cara menjalankan permintaan:

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);
    }
William Rees
sumber
1

Seperti yang disebutkan dalam jawaban lain juga, masalah dengan bentuk tubuh yang seharusnya dikirim dalam format x-www-form-urlencoded . Itu bekerja dengan baik bagi saya di tukang pos tetapi untuk menerapkan hal yang sama dalam sudut sedikit khas. Di sini badan permintaan posting pertama-tama harus dikonversi dalam format HttpParams dan kemudian meneruskan ke parameter 'tubuh' permintaan posting sebagai string seperti ini ..

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
        }
      */
    })
  }

}
himanshu setia
sumber