ตรวจสอบสิทธิ์ผู้ใช้ทดสอบ {“ error_type”:“ OAuthException”,“ รหัส”: 400,“ error_message”:“ แอปแพลตฟอร์มไม่ถูกต้อง”}


17

ฉันพยายามกู้คืนโทเค็นการเข้าถึงผ่านทาง Instagram Basic Display API แต่เมื่อพยายามตรวจสอบสิทธิ์ผู้ใช้ทดสอบฉันได้รับข้อผิดพลาดนี้:

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

ฉันคาดว่าจะเห็นหน้าจอการให้สิทธิ์แอป


คุณเคยคิดวิธีแก้ปัญหาสำหรับเรื่องนี้หรือไม่? ฉันมีปัญหาเดียวกัน
MontyTheMack

คำตอบ:


26

Felice!

เมื่อตั้งค่าแอพ Instagram คุณควรใช้ ID แอปเฉพาะแพลตฟอร์มและไม่ใช่การตั้งค่าทั่วไปบน Facebook

ใน Facebook แอปแดชบอร์ดของคุณไปProducts > Instagram > Basic DisplayและควรดูInstagram App ID

ใช้สิ่งนั้นใน URL การอนุญาตของคุณและควรใช้งานได้


คุณเคยคิดวิธีแก้ปัญหาสำหรับเรื่องนี้หรือไม่? ฉันมีปัญหาเดียวกัน
MontyTheMack

4
ฉันใช้รหัสแอพ Instagram และยังคงมีข้อผิดพลาดนี้อยู่
MontyTheMack

1
กันที่นี่ ผมสังเกตเห็นว่าสิ่งที่พารามิเตอร์ที่คุณใส่ใน [ api.instagram.com/oauth/access_token/] , มันจะโยนความผิดพลาด! อาจเป็นจุดสิ้นสุดที่ไม่ดี? ไม่ว่าในกรณีใดฉันได้ปฏิบัติตามทุกอย่างทีละขั้นตอนที่กล่าวถึงใน [ developers.facebook.com/docs/instagram-basic-display-api/และทั้งหมดทำงานได้อย่างสมบูรณ์แบบจนขั้นตอนที่ 5: แลกเปลี่ยนรหัสสำหรับโทเค็นที่ฉันใช้ บุรุษไปรษณีย์จะโทร [ api.instagram.com/oauth/access_token/]กับพารามิเตอร์CLIENT_ID, client_secret, grant_type, redirect_uri และรหัส (ดึงหลังจากที่ประสบความสำเร็จในการอนุมัติ) แต่ล้มเหลว
DingDong

6
ฉันมีปัญหาเดียวกันกับที่ฉันทำการทดสอบกับบุรุษไปรษณีย์ด้วยการส่งพารามิเตอร์ผ่านร่างกายและการตั้งค่า x-www-form-urlencoded มันทำงานเหมือน Cham
Michael de Menten

6

การส่งผ่านพารามิเตอร์ผ่านร่างกายและใน x-www-form-urlencoded ทำงานได้ดีอย่างที่คุณเห็นในภาพด้านล่าง ป้อนคำอธิบายรูปภาพที่นี่


1
จริงนี่ใช้งานได้ดีอย่างสมบูรณ์
DingDong

มันไม่ทำงานสำหรับฉัน
Nikunj

1
ขอบคุณคุณช่วยฉันจริงๆ :)
BartK_97

2

ฉันมีปัญหาที่คล้ายกันและสามารถแก้ไขได้โดยการตั้งค่าประเภทเนื้อหาของคำขอไปยัง application / x-www-form-urlencoded ด้านล่างเป็นตัวอย่าง AC # ที่แสดงวิธีดำเนินการตามคำขอ:

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

ตามที่ระบุไว้ในคำตอบอื่น ๆ เช่นกันปัญหากับร่างกายรูปแบบที่ควรจะส่งในx-www- ฟอร์ม urlencodedรูปแบบ มันใช้งานได้ดีสำหรับบุรุษไปรษณีย์ แต่การนำไปใช้ในเชิงมุมเป็นเรื่องปกติเล็กน้อย ที่นี่เนื้อหาคำขอโพสต์ต้องแปลงเป็นรูปแบบ HttpParams ก่อนจากนั้นส่งต่อไปยังพารามิเตอร์ 'เนื้อหา' ของคำขอโพสต์เป็นสตริงเช่นนี้ ..

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

}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.