Yahoo OAuth无效的客户端ID

问题描述

我正在尝试将ASP.NET Core 3.1 Web应用程序与Yahoo连接。为此,我必须使用OAuth设置授权。我遵循了一些不同的指南,包括

https://developer.yahoo.com/oauth2/guide/openid_connect/getting_started.html

https://www.yogihosting.com/implementing-yahoo-oauth-2-0-in-csharp-and-asp-net/

我已经在Yahoo中设置了我的应用,其配置如下图所示:

Yahoo App Configuration

然后我将代码设置为使用以下代码将授权请求发送给Yahoo:

public void YahooAuth()
    {
        string id = configuration["YahooClientId"];
        string returnUrl = "https://www.fantasysimmer.com/FootballSimulator/Sim";
        string url = $"https://api.login.yahoo.com/oauth2/request_auth?client_id={id}--&response_type=code&redirect_uri={returnUrl}";
        Response.Redirect(url);

    }

但是,运行此代码后,出现错误页面,并显示消息“开发人员:请指定有效的客户端,然后再次提交。”,URL显示

https://api.login.yahoo.com/oauth2/error?client_id={Client_ID}--&error=unauthorized_client&error_description=invalid+client+id

我仔细检查了两次客户ID,URL中的客户ID与Yahoo App的个人资料中的ID相同。我现在想知道,在注册应用程序时我错过了一个额外的步骤,还是我的代码有问题?

编辑:已取得进展!客户端ID后的破折号必须是示例的一部分,否则是错误的。删除错误后,我开始收到一个错误,要求输入有效的请求。这与我的返回网址有关,因为用'oob'替换它使它可以通过。

解决方法

所以有两个错误。首先是不应在客户端ID后加上“-”。我不确定为什么在雅虎的例子中它们在那里存在,但是并不需要它们。第二个原因是我的返回uri在我的代码中大写,但在我的应用程序设置中未大写。现在可以了!