1
從用戶那裏獲得oath2.0訪問令牌和刷新令牌後,如何使用它們在C#和java中創建PlusService實例?
目前我正在使用BaseClientService.Initializer,但這隻適用於匿名應用程序令牌。 我想使用從OAUTH2進程獲得的OAuth2Parameters對象創建加服務的實例。如何從令牌創建PlusService實例
從用戶那裏獲得oath2.0訪問令牌和刷新令牌後,如何使用它們在C#和java中創建PlusService實例?
目前我正在使用BaseClientService.Initializer,但這隻適用於匿名應用程序令牌。 我想使用從OAUTH2進程獲得的OAuth2Parameters對象創建加服務的實例。如何從令牌創建PlusService實例
OAuth2Parameters舉行的最後一步的令牌在OATH2 proccess
OAuth2Parameters parameters = new OAuth2Parameters()
{
ClientId = CLIENT_ID,
ClientSecret = CLIENT_SECRET,
AccessCode = token,
RedirectUri = REDIRECT_URI //needed because of a bug
};
OAuthUtil.GetAccessToken(Request.Url.Query, parameters);
BaseClientService.Initializer init = new BaseClientService.Initializer { Authenticator = new AuthenticatorImp(parameters)};
PlusService service = new PlusService(init);
Person me = service.People.Get("me").Execute();
有了自己的實現認證
public class AuthenticatorImp : Google.Apis.Authentication.IAuthenticator
{
OAuth2Parameters parameters;
public AuthenticatorImp(OAuth2Parameters parameters)
{
this.parameters = parameters;
}
/// <summary>
/// Takes an existing httpwebrequest and modifies its headers according to
/// the authentication system used.
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public void ApplyAuthenticationToRequest(HttpWebRequest request)
{
if (parameters.TokenType == "Bearer" && parameters.TokenExpiry < DateTime.Now)
{
OAuthUtil.RefreshAccessToken(parameters);
}
request.Headers.Add("Authorization: Bearer " + parameters.AccessToken);
}
}
由於V1.7.0-βGoogle.Apis.Authentication的。 IAuthenticator不推薦使用HttpClientInitializer。
public class ConfigurableHttpClientInitializer : IConfigurableHttpClientInitializer
{
OAuth2Parameters parameters;
public ConfigurableHttpClientInitializer(OAuth2Parameters parameters) {
this.parameters = parameters;
}
/// <summary> Initializes an Http client after it was created. </summary>
public void Initialize(ConfigurableHttpClient httpClient)
{
if (parameters.TokenType == "Bearer" && parameters.TokenExpiry < DateTime.Now)
{
OAuthUtil.RefreshAccessToken(parameters);
}
httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + parameters.AccessToken);
}
}
爲什麼這個問題是在一個月前發佈的,當時Google明確表示所有的新API都不使用這種方法:https://developers.google.com/gdata/docs/auth/oauth ?CSW = 1 – AndroidDev