【问题标题】:HttpClient PostAsync to Blogger APIHttpClient PostAsync 到 Blogger API
【发布时间】:2013-01-31 22:37:52
【问题描述】:

我正在使用以下 API 来与 Google Blogger 进行交互。我需要在用户博客中插入一篇文章。但是,我的 PostAsync 功能有问题。我收到 401 告诉我,尽管有 API 密钥,但我的请求未获得授权,但是我认为我可能没有正确插入我的 OAuth 令牌。

我有以下代码,

这是我设置授权标头的代码,(注意密钥是假的,但与我认为的 OAuth 令牌形式相同)

httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("ya29.AHES6ZTBZi1dWPVdlcF7qAD-nSM6XxwY2323232m4lXW");

这是我的 PostAsync 函数

                HttpResponseMessage response = await req.PostAsync(URLs.postBlogURL + blogID + URLs.postBlogURLPost, new StringContent(json));

谁能告诉我哪里出错了?干杯。

[更新]

我不确定授权是否必须在其中包含字符串承载。

    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer ya29.AHES6ZTBZi1dWPVdlcF7qAD-nSM6XxwY2323232m4lXW");

【问题讨论】:

  • 有没有办法独立验证您的 API 密钥?另外,请尝试检查响应的内容,它可能包含一些额外的诊断信息。
  • 是的,我可以执行需要 API 的获取请求。因此,这绝对取决于发布请求。我只是觉得我没有为我的 HttpClient 正确设置授权标头。
  • 您的GET 请求怎么样?在网络浏览器中还是使用 HttpClient?
  • 您是否使用过 Fiddler(或类似的东西)来比较您的工作 GET 请求和失败的 POST?
  • @Snixtor 据我所知,我没有做任何 GET 请求。我使用“WebAuthenticationResult”和“WebAuthenticationBroker”进行身份验证。

标签: c# rest oauth blogger dotnet-httpclient


【解决方案1】:

这就是我能够为我的请求设置正确的 OAuth auth 标头的方式:

httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue( "Bearer", _accessTokenWrapper.Token.access_token );

构造函数的第一个参数是用于授权标头的方案。所以在请求中,标头是:

Authorization: Bearer {the access token string}

【讨论】:

  • 谢谢!在这里工作正常。
  • 嗨@Scott,您能发布 accessTokenWrapper 类的代码吗?我有兴趣为令牌值创建一个全局存储。谢谢
  • 什么命名空间和 NuGet 包我会得到你用来创建 _accessTokenWrapper 对象的类?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多