为了账号安全,请及时绑定邮箱和手机立即绑定

Yahoo OAuth2 get_token 返回错误 500(内部服务器错误)

Yahoo OAuth2 get_token 返回错误 500(内部服务器错误)

C#
慕勒3428872 2023-12-17 10:04:47
我正在关注雅虎官方文档 (https://developer.yahoo.com/oauth2/guide/openid_connect/getting_started.html )。用户使用雅虎登录后,我可以成功获取授权码。我现在处于第 3 步,尝试用授权代码交换令牌,但 Yahoo 一直返回 http 错误 500。为了从 Yahoo 交换访问令牌的授权代码,我使用以下 RestSharp 语法:var client = new RestClient(provider.TokenUrl);RestRequest request = new RestRequest() { Method = Method.POST };request.AddParameter("client_id", codeModel.clientId, ParameterType.GetOrPost);request.AddParameter("client_secret", provider.Secret, ParameterType.GetOrPost);request.AddParameter("code", codeModel.code, ParameterType.GetOrPost);request.AddParameter("grant_type", "authorization_code", ParameterType.GetOrPost);request.AddParameter("redirect_uri", codeModel.redirectUri, ParameterType.GetOrPost);request.AddHeader("Content-Type", "application/x-www-form-urlencoded");var response = client.Execute<TokenResponseModel>(request);responde.data 返回以下内容: 内容:{“错误”:“ACCESS_TOKEN_GENERATION_FAILED”,“error_description”:“访问令牌生成失败”} 状态代码:InternalServerError官方文档指出:“以下请求参数在请求体中使用HTTP POST传输。但是,您也可以在 HTTP 标头中发送参数 client_id 和 client_secret”。我已经尝试了这两种方法(clientid 和机密作为正文的一部分和基本授权标头),并且都返回相同的结果。当发送 clientid 和机密作为基本授权标头的一部分时,上面的两个参数都将替换为以下内容:client.Authenticator = new RestSharp.Authenticators.HttpBasicAuthenticator(codeModel.clientId, provider.Secret);如前所述,雅虎返回的唯一消息是“内部服务器错误”。RestSharp 语法是否有问题可能导致此问题?任何其他想法将不胜感激。不用说,请求的所有参数都包含了它们需要的数据。
查看完整描述

1 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

当您在 YDN 创建应用程序配置文件时,您必须确保至少选择一项 API 权限。例如,尝试“个人资料(社交目录)公开读取”。

如果您的应用程序没有 API 权限,那么令牌生成将会按照您所描述的方式失败。

如果您已经创建了没有权限的应用程序,则必须将其删除并重新创建。


查看完整回答
反对 回复 2023-12-17
  • 1 回答
  • 0 关注
  • 133 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信