【问题标题】:Coinbase OAuth Failure Not Found未找到 Coinbase OAuth 失败
【发布时间】:2018-11-04 00:51:38
【问题描述】:

我正在尝试在我的 coinbase 应用程序中设置 OAuth。在回调重定向中授权后我遇到了问题。

我有一个像这样的 .Net-Core 应用程序设置:

public const string COINBASE_AUTH_ID = "coinbase";

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();

    services.AddAuthentication(options =>
    {
       options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
       options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
       options.DefaultChallengeScheme = COINBASE_AUTH_ID;
    })
    .AddCookie()
    .AddOAuth(COINBASE_AUTH_ID, options =>
    {
        options.ClientId = Configuration["Coinbase:ClientId"];
        options.ClientSecret = Configuration["Coinbase:ClientSecret"];
        options.CallbackPath = new PathString("/signin-coinbase");

        options.AuthorizationEndpoint = "https://www.coinbase.com/oauth/authorize";
        options.TokenEndpoint = "http://www.coinbase.com/oauth/token";

        options.SaveTokens = true;
 //...

点击授权按钮后,我被重定向到我的回调 url:localhost/signin-coinbase 那里我收到一个错误:

异常:OAuth 令牌端点失败:状态:未找到;标头:缓存控制:无存储、必须重新验证、无缓存、私有

在错误的正文部分,有一条消息:

正文:无效请求。而不是 GET 请求,您应该使用有效的 POST 参数进行 POST。更多信息请见https://developers.coinbase.com/docs/wallet/coinbase-connect

编辑 这个错误发生在Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler

我推测原因是身份验证处理程序正在向/oauth/token api 发出获取请求,但它应该在发帖,有什么想法吗?

我应该尝试使用 Oidc 吗?

【问题讨论】:

    标签: c# oauth-2.0 .net-core coinbase-api


    【解决方案1】:

    我为此创建了一个 nuget 包,以便其他人可以避免我遇到的问题:

    Install-Package Coinbase.Authentication
    

    原来他们的documentation 是错误的。在顶部它声明他们的令牌端点是:

    他们声称他们的令牌访问网址是:

    访问令牌网址:http://www.coinbase.com/oauth/token

    这对我来说似乎有点奇怪,因为他们的令牌端点没有使用 ssl。在搜索互联网时,我发现了一个使用正确 url 的应用程序:

    基本上为了解决这个问题,我将选项更改为如下所示:

    .AddOAuth(COINBASE_AUTH_ID, options =>
    {
        options.ClientId = Configuration["Coinbase:ClientId"];
        options.ClientSecret = Configuration["Coinbase:ClientSecret"];
        options.CallbackPath = new PathString("/signin-coinbase");
    
        options.AuthorizationEndpoint = "https://www.coinbase.com/oauth/authorize";
        options.TokenEndpoint = "https://api.coinbase.com/oauth/token";
    
    
     //...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-02
      • 2012-12-24
      • 2022-07-21
      • 1970-01-01
      • 2012-08-02
      • 2018-04-21
      相关资源
      最近更新 更多