当前位置: 首页 > 知识库问答 >
问题:

Spotify重定向在参数前添加字符

柳昊焱
2023-03-14

我目前正在创建一个ASP. NET应用程序,用户在使用Spotify Web API之前登录Spotify。

在调用API时,您指定response_type、client_id、作用域、redirect_uri和状态。当您调用时,它会将您重定向到redirect_uri,用户信息作为json中的参数,因为我想使用WPF网络浏览器,所以我必须将其添加到我的代码中,以允许IE查看JSON(此处有更多信息)。

   private bool SetRegistery()
    {
        try
        {
            using (var hklm = RegistryKey.OpenBaseKey(RegistryHive.ClassesRoot, RegistryView.Registry64))
            {
                using (RegistryKey key = hklm.OpenSubKey(@"MIME\Database\Content Type\application/json", true))
                {
                    if (key != null)
                    {
                        key.SetValue("CLSID", "{25336920-03F9-11cf-8FD0-00AA00686F13}");
                        key.SetValue("Encoding", new byte[] { 0x80, 0x00, 0x00, 0x00 });
                    }
                }
            }
            return true;
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
        return false;
    }

我首先去的网址是:

https://accounts.spotify.com/authorize?response_type=token

重定向URI是http://httpbin.org/get,它只会用传递的JSON进行响应,但当spotify API将我重定向时,url会显示为:

http://httpbin.org/get#access_token=...

而不是参数之间的#,它应该是一个?,手动纠正这个给我我需要的结果。

http://httpbin.org/get?access_token=...

        SpotifyAuthentication spotifyAuth = new SpotifyAuthentication();
        string scope = "user-read-private user-read-email";
        string redirect_uri = "http://httpbin.org/get";
        string state = randomString(16);
        string url = "https://accounts.spotify.com/authorize";
        url += "?response_type=token";
        url += "&client_id=" + WebUtility.UrlEncode(spotifyAuth.clientID);
        url += "&scope=" + WebUtility.UrlEncode(scope);
        url += "&redirect_uri=" + WebUtility.UrlEncode(redirect_uri);
        url += "&state=" + WebUtility.UrlEncode(state);
        authenticationBrowser.Url = new System.Uri(url);
        Debug.WriteLine(new System.Uri(url));
  • 当我将Spotify URL复制到我的浏览器时,它会给出相同的结果,这意味着它不在我的客户端,而可能在我上面的URL生成中。
  • 我尝试编辑浏览器的Navigating事件,以便在URL重定向之前编辑它,但由于某种原因,该函数没有检测到重定向。

共有1个答案

经福
2023-03-14

您所描述的似乎是来自授权指南的隐式授权流,其中最终重定向URL是一个散列片段——用#表示,而不是一个查询字符串,该字符串将是?相反这是正确的行为-您应该能够通过获取Url从WPF web浏览器中读取这些值。片段值,它将包含重定向的值,但是如果出现错误或用户拒绝请求,这将是一个与您期望的一样的查询字符串值。

 类似资料:
  • 问题内容: 是否可以在向其添加一些参数数据的同时将请求转发给另一个控制器?我尝试添加到ModelMap中,但是它似乎不存在问题。我正在做类似的事情: 我能想到的唯一其他方法是将参数放在会话上,然后将其弹出目标控制器。 问题答案: 最简单的方法是将数据添加到请求中。 由于这是转发,因此将相同的请求传递到服务器内的不同处理程序。 作为示例,让我们从两个控制器的简单设置开始,一个转发到另一个: 添加数据

  • 首先,我不确定这是不是实现我想要的东西的正确方法..我正在尝试将如下所示的导出绑定添加到router . navigate()-方法: 问题是我从不使用该指令,而是通过路由器来处理: 我如何实现相同的导出绑定从第一个例子中的接受呼叫()-方法?我已经添加了一个输入()变量,并尝试使用queryParams,如下所示: 但这并不起作用。

  • 问题内容: 我有一个网页。该网页将用户重定向到另一个网页,或多或少通过以下方式: 好吧,您知道,我要做的是将GET参数转换为POST参数。不要告诉我这很不好,我知道我自己,这也不是我真正要做的,重要的是我从数组中收集数据并尝试通过POST将其提交到另一个页面。但是,如果用户关闭了JavaScript,它将无法正常工作。我需要知道的是:有没有一种方法可以通过PHP传递POST参数,以便重定向也可以通

  • 我正在尝试让Spotify API与AngularJS一起工作。我在授权阶段收到一个无效的重定向URI错误(https://developer.spotify.com/web-api/authorization-guide/). 我在白名单中添加了redirect_uri,当我有一个uri,比如 但当我有一个带有散列的URI时,它就不起作用了 我想使用后者URI的原因是因为前者我得到了一个URI,

  • 我试图通过spotify Android Api在我的Android应用程序中实现spotify,当我试图获取访问令牌时,我得到的是“#”而不是“?”在重定向uri中设置GET参数,如下所示http://192.168.x.xx:8080/callbackspotify.php#access_token=BQA4Ze8sb-pbuvjjinzngb08rzhnngwj94k9dp_QADbo_Aa

  • 我正在使用Spotipy从授权用户那里获取一些spotify数据,但我不知道如何授权我的帐户。 我认为服务器需要在http://www.myapp.com/callback托管一些东西,这是正确的吗?需要返回什么?也许我完全遗漏了一些东西...我对整个必需的重定向URI感到非常困惑... 我正在尝试制作一个没有网站的程序,那么我应该如何处理授权?重定向URI到底应该做什么? 谢谢 编辑: 现在使用