如何使用OAuth访问令牌调用GData服务
本文关键字:GData 服务 调用 访问令牌 何使用 OAuth | 更新日期: 2023-09-27 18:21:34
我有一个OAuth访问令牌,它来自:
var state = new AuthorizationState(new[] { "http://www.google.com/m8/feeds/" })
{
Callback = new Uri(NativeApplicationClient.OutOfBandCallbackUrl)
};
// Redirect to:
var authUri = arg.RequestUserAuthorization(state)
...
var authState = arg.ProcessUserAuthorization(authCode, state);
之后,如何将authState.AccessToken
从GData API传递到服务?
我找到的所有示例都将OAuth2Authenticator<>
传递给服务的构造函数,例如:
var auth = new OAuth2Authenticator<NativeApplicationClient>(...);
var service = new PlusService(auth);
我正在尝试使用ContactsService
,但最新版本(2.2.0.0)似乎没有这个构造函数——唯一的构造函数使用应用程序名称。
我已经尝试用ContactsService.SetAuthenticationToken()
设置访问令牌,但请求标头设置不正确,它看起来像这样:
Authorization: GoogleLogin auth=<access token>
代替:
Authorization: Bearer <access token>
似乎也没有任何方法可以操作标头。
我们遇到了同样的问题。您不应该使用SetAuthenticationToken(),而应该像GData API页面上提供的示例所建议的那样,为RequestFactory分配OAuth2RequestFactory。
现在,如果您已经在GData API之外管理OAuth令牌,那么这似乎有些反直觉。事实证明,您实际上不需要向请求工厂提供clientId、clientSecret等。唯一重要的字段是OAuth访问令牌(如果它是有效的访问令牌)。
至少对我们来说,我们发现通过这种方法,GData API正确地指定了Authorization Http头,并且API调用是成功的。