验证测试用户 "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 ,无法验证路径。不要让我选择“特定用户”这个解决方法
页面有很多链接,如何用selenium进行自动化测试,验证每个链接的正确性