web-dev-qa-db-fra.com

Authentifier l'utilisateur de test {"error_type": "OAuthException", "code": 400, "error_message": "Invalid platform app"}

J'essaie de récupérer le jeton d'accès via l'API Instagram Basic Display, mais lorsque j'essaie d'authentifier l'utilisateur de test, j'obtiens cette erreur:

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

Je m'attends à voir l'écran d'autorisation de l'application

14
Felice Caricati

Comme mentionné dans d'autres réponses également, le problème était avec le corps du formulaire qui est censé être envoyé au format x-www-form-urlencoded. Cela fonctionnait bien pour moi dans le facteur, mais pour l'implémenter dans angulaire est légèrement typique. Ici, le corps de la demande de publication doit d'abord être converti au format HttpParams, puis passer au paramètre "corps" de la demande de publication sous la forme d'une chaîne comme celle-ci.

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

}
0
himanshu goyal