web-dev-qa-db-ja.com

テストユーザーの認証{"error_type": "OAuthException"、 "code":400、 "error_message": "Invalid platform app"}

Instagram Basic Display APIを介してアクセストークンを復元しようとしていますが、テストユーザーを認証しようとすると、次のエラーが発生します。

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

アプリの承認画面が表示されることを期待しています

14
Felice Caricati

他の回答でも述べたように、問題はx-www-form-urlencoded形式で送信されることになっているフォーム本文にありました。郵便配達員では私にとってはうまくいきましたが、-angularで同じことを実装するのは少し典型的です。ここでは、投稿リクエストの本文を最初にHttpParams形式に変換してから、このような文字列として投稿リクエストの 'body'パラメータに渡す必要があります。

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