验证测试用户 "error_type": "OAuthException", "code": 400, "error_messa

Posted

技术标签:

【中文标题】验证测试用户 "error_type": "OAuthException", "code": 400, "error_message": "Invalid platform app"【英文标题】:Authenticate the Test User "error_type": "OAuthException", "code": 400, "error_message": "Invalid platform app" 验证测试用户 "error_type": "OAuthException", "code": 400, "error_message": "Invalid platform app" 【发布时间】:2020-02-17 16:44:14 【问题描述】:

我正在尝试通过 Instagram 基本显示 API 恢复访问令牌,但在尝试对测试用户进行身份验证时出现此错误:


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

我希望看到应用授权屏幕

【问题讨论】:

你有没有想过解决这个问题?我也有同样的问题。 嗨@Felice!我也有同样的问题。你愿意帮我解决这个问题吗? 【参考方案1】:

菲利斯!

在设置 Instagram 应用时,您应该使用特定于平台的应用 ID,而不是在 Facebook 上设置的通用 ID。

在您的 Facebook 应用控制面板中转到 Products > Instagram > Basic Display,应该会看到 Instagram 应用 ID

在您的授权 URL 中使用它,它应该可以工作。

【讨论】:

你有没有想过解决这个问题?我也有同样的问题。 我使用的是 Instagram 应用 ID,但仍然出现此错误。 这里也一样。我注意到无论您在 [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 和 code(成功授权后检索)。但失败了 我遇到了同样的问题,我用邮递员进行了测试,通过正文传递参数并设置 x-www-form-urlencoded,它就像一个 cham 一样工作 @MichaeldeMenten 将请求转换为编码字符串的解决方案是我的设置工作所必需的。对于我的用例,这应该是公认的答案。【参考方案2】:

正如其他答案中提到的,问题在于应该以 x-www-form-urlencoded 格式发送的表单正文。它在邮递员中对我来说工作得很好,但在 angular 中实现同样的功能有点典型。 这里 post 请求 body 首先必须转换为 HttpParams 格式,然后像这样的字符串传递给 post 请求的 '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
        
      */
    )
  


【讨论】:

【参考方案3】:

通过 body 和 x-www-form-urlencoded 传递参数可以正常工作,如下图所示

【讨论】:

【参考方案4】:

我遇到了类似的问题,可以通过将请求的内容类型设置为 application/x-www-form-urlencoded 来解决它。下面是一个展示如何执行请求的 c# 示例:

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);
    

【讨论】:

以上是关于验证测试用户 "error_type": "OAuthException", "code": 400, "error_messa的主要内容,如果未能解决你的问题,请参考以下文章

iOS SDK 在测试设备上进行身份验证时报告“用户被拒绝”

iis7.0 ,无法验证路径。不要让我选择“特定用户”这个解决方法

php set_error_handler

页面有很多链接,如何用selenium进行自动化测试,验证每个链接的正确性

Instagram Api OAuthAccessTokenException 400 错误

Mvc.Remote验证验证用户名石头重复