【问题标题】:Still get "invalid_client" on vimeo api athough I got "code"尽管我得到了“代码”,但仍然在 vimeo api 上得到“invalid_client”
【发布时间】:2015-07-17 10:20:48
【问题描述】:

我得到了代码,但在显示“invalid_client”的代码下方运行此代码。我在 Spotify 上测试了。

{
  "error":"invalid_client",
  "error_description":"A valid client ID must be provided along with any request made to Vimeo's API"
}
var SpotifyUrl = "https://api.vimeo.com/oauth/authorize?client_id=" + Uri.EscapeDataString("7......e96c30f") + " &response_type=code&redirect_uri=" + Uri.EscapeDataString("http://localhost:8888/callback") + "&state=xyzbc&show_dialog=true";
            var StartUri = new Uri(SpotifyUrl);
            var EndUri = new Uri("http://localhost:8888/callback");

var postData = new List<KeyValuePair<String, String>>();
            postData.Add(new KeyValuePair<String, String>("grant_type", "authorization_code"));
            postData.Add(new KeyValuePair<String, String>("code", code));
            postData.Add(new KeyValuePair<String, String>("redirect_uri", Uri.EscapeDataString("http://localhost:8888/callback")));
            postData.Add(new KeyValuePair<String, String>("client_id", clientid));     
            HttpContent content = new FormUrlEncodedContent(postData);
            String response = "";
            try
            {
                var data = await client.PostAsync("https://api.vimeo.com/oauth/access_token", content);
                byte[] result =  data.Content.ReadAsByteArrayAsync().Result;
                response = Encoding.UTF8.GetString(result, 0, result.Length);
            }

【问题讨论】:

  • “提供的重定向 uri 与用于创建授权码的不匹配”。

标签: c# wpf vimeo-api


【解决方案1】:

我相当确定您的问题是您添加到 client_id 的尾随空格...

(向右滚动,我已经指明了地点)

var SpotifyUrl = "https://api.vimeo.com/oauth/authorize?client_id=" + Uri.EscapeDataString("7......e96c30f") + " &response_type=code&redirect_uri=" + Uri.EscapeDataString("http://localhost:8888/callback") + "&state=xyzbc&show_dialog=true";
----------------------------------------------------------------------------------------------------------------^

这将在 client_id 的末尾附加一个 %20(空格)

【讨论】:

  • 对不起,我还是没有成功。
  • 我还有一个代码和状态。问题出在这里 var data = await client.PostAsync("api.vimeo.com/oauth/access_token", content); byte[] 结果 = data.Content.ReadAsByteArrayAsync().Result; response = Encoding.UTF8.GetString(result, 0, result.Length);
  • @michealbarrons 好吧,这只是向服务器发出实际请求的地方,我们等待响应。请求的任何问题都将出现在该行上。我还要指出,“localhost”的回调 url 可能不起作用,这取决于它的使用方式(我不熟悉 Vimeo API)。如果您的机器使用它,那很好,但如果它用于服务器端,spotify 会将 localhost 解释为它运行的服务器。也就是说,我专注于 client_id,因为这就是错误所说的问题所在。
  • 另一个想法:您发送 client_id 两次,一次在 URL 中,一次在正文中。根据服务器端发生的情况,它可能会将其视为包含 2 个条目(都是您的 client_id)的列表。尝试从正文和/或网址中删除它,看看是否有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-15
  • 2018-08-18
  • 1970-01-01
  • 1970-01-01
  • 2013-03-04
相关资源
最近更新 更多