HttpClient使用PostAsync请求Blogger API

4
我正在使用以下API与Google Blogger进行交互。我需要在用户的博客中插入一篇文章。但是,我的PostAsync功能出现问题。尽管我有一个API密钥,但我收到了401错误,告诉我我的请求未经授权,但我认为我可能没有正确插入我的OAuth令牌。
以下是我设置授权头的代码(请注意,那里的密钥是假的,但与我认为的OAuth令牌形式相同)。
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("ya29.AHES6ZTBZi1dWPVdlcF7qAD-nSM6XxwY2323232m4lXW");

这是我的PostAsync函数

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

有人能告诉我我做错了什么吗?谢谢。

[更新]

我不确定授权是否必须包含字符串bearer。

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

1
有没有办法独立验证您的API密钥?另外,尝试检查响应内容,它可能包含一些额外的诊断信息。 - Snixtor
是的,我可以正常使用需要 API 的 get 请求。所以这肯定是与 post 请求有关。我只是感觉我没有为我的 HttpClient 正确设置授权头。 - Stephen Hynes
你是通过网页浏览器还是使用HttpClient执行“GET”请求的呢? - Snixtor
你是否使用过 Fiddler(或类似工具)来比较你的可行的 GET 请求和失败的 POST 请求? - Tyson
据我所知,我没有进行任何GET请求。我使用“WebAuthenticationResult”和“WebAuthenticationBroker”进行身份验证。 - Stephen Hynes
我可以正常地进行需要 API 的 GET 请求。据我所知,我没有进行任何 GET 请求。您最近的反馈有点令人困惑。您已经成功执行了 GET 请求吗?如果您还没有成功执行 GET 请求,建议您首先解决这个问题,因为要做对(或做错)的事情较少。 - Snixtor
1个回答

25
这是我成功设置请求的正确OAuth授权标头的方法:
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue( "Bearer", _accessTokenWrapper.Token.access_token );

构造函数的第一个参数是用于授权头的方案。因此,在请求中,头部读取如下:
Authorization: Bearer {the access token string}

嗨@Scott,你能否发布accessTokenWrapper类的代码?我有兴趣创建一个全局存储令牌值的方法。谢谢。 - Santiago Aceñolaza
我应该获取哪个命名空间和NuGet包来获取您用于创建_accessTokenWrapper对象的类? - daniel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接