Test Kullanıcısının kimliğini doğrulayın {“error_type”: “OAuthException”, “code”: 400, “error_message”: “Geçersiz platform uygulaması”}


17

Instagram Temel Görüntüleme API'sı aracılığıyla erişim belirtecini kurtarmaya çalışıyorum, ancak test kullanıcısının kimliğini doğrulamaya çalışırken bu hatayı alıyorum:

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

Uygulama yetkilendirme ekranını görmeyi umuyorum


Bunun için bir çözüm buldunuz mu? Bendede aynı sorun var.
MontyTheMack

Yanıtlar:


26

Felice!

Bir Instagram uygulaması oluştururken, Facebook'taki genel kurulum değil, platforma özgü Uygulama Kimliğini kullanmalısınız.

Facebook uygulamanızın Kontrol Panelinde Instagram Uygulama KimliğiniProducts > Instagram > Basic Display görmeniz gerekir .

Bunu yetkilendirme URL'nizde kullanın ve çalışması gerekir.


Bunun için bir çözüm buldunuz mu? Bendede aynı sorun var.
MontyTheMack

4
Instagram uygulama kimliğini kullanıyorum ve hala bu hatayı veriyor.
MontyTheMack

1
Burada aynı. Sana [koymak o ne olursa olsun parametreleri fark api.instagram.com/oauth/access_token/] , o bir hata atar! Belki kötü bir uç nokta? Her durumda, [ developers.facebook.com/docs/instagram-basic-display-api/… 'de bahsedilen her şeyi adım adım takip ettim ve 5. Adım: Kod'u daha sonra kullandığım bir Token için değiştirin. postacıyı client_id , client_secret, grant_type, redirect_uri ve code parametreleriyle [ api.instagram.com/oauth/access_token/] (başarılı bir yetkilendirme sonrasında geri alındı) parametreleriyle aramak için postacı . ama başarısız
DingDong

6
Ben aynı sorunu yaşadım parametreleri vücuttan geçen ve x-www-form-urlencoded ayarı ile postacı ile testi yaptım, bir cham gibi çalıştı
Michael de Menten

6

Parametrelerin gövdeden ve x-www-form-urlencoded içinde geçirilmesi, aşağıdaki resimde gördüğünüz gibi iyi çalışıyor resim açıklamasını buraya girin


1
doğru, bu mükemmel çalıştı
DingDong

Benim için çalışmıyor
Nikunj

1
teşekkürler bana gerçekten yardımcı
oldun

2

Ben de benzer bir sorun vardı ve uygulama / x-www-form-urlencoded için isteğin içerik türünü ayarlayarak çözmeyi başardı. aşağıda isteğin nasıl yürütüleceğini gösteren ac # örneği:

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

Diğer cevapta da belirtildiği gibi, sorun x-www-form-urlencoded formatında gönderilmesi gereken form gövdesi ile ilgilidir . Postacı için benim için iyi çalışıyordu, ancak aynı şeyi açısal olarak uygulamak biraz tipik. Burada post istek gövdesi önce HttpParams biçiminde dönüştürmek ve daha sonra böyle bir dize olarak post istek 'body' parametresine geçmek zorunda ..

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

}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.