我有一个来自的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中的服务?
我找到的所有examples都将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>
似乎没有任何方法来操纵标题。
答案 0 :(得分:0)
我们遇到了同样的问题。您应该根据GData API页面上提供的示例的建议,为RequestFactory分配OAuth2RequestFactory,而不是使用SetAuthenticationToken()。
如果你已经在GData API之外管理OAuth令牌,那么这似乎有点违反直觉。事实证明,您不需要实际向请求工厂提供clientId,clientSecret等。唯一重要的字段是OAuth访问令牌,如果它是有效的访问令牌。
至少对我们来说,我们发现使用这种方法,GData API正确指定了Authorization Http标头,并且API调用成功。