2013-11-25 2 views
1

사용자로부터 oath2.0 액세스 토큰 및 새로 고침 토큰을 얻은 후 이들을 사용하여 C# 및 java에서 PlusService의 인스턴스를 만드는 방법은 무엇입니까?
현재 BaseClientService.Initializer를 사용하고 있지만 익명의 응용 프로그램 토큰에서만 작동합니다. OAUTH2 프로세스에서 가져온 OAuth2Parameters 객체를 사용하여 더하기 서비스의 인스턴스를 만들고 싶습니다.토큰에서 PlusService의 인스턴스를 만드는 방법

답변

3

OAuth2Parameters는 인증 V1.7.0 베타 Google.Apis.Authentication의로

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); 
    } 
} 

당신 자신의 구현으로 OATH2의 였는지를

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(); 

의 마지막 단계의 토큰을 누르고 있습니다. IAuthenticator 대신 HttpClientInitializer를 사용하십시오. https://developers.google.com/gdata/docs/auth/oauth : 도대체이 구글이 명확하게 모든 새로운 API도이 방법을 사용하지 않는 것이 명시 할 때 한 달 전에 게시 왜

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); 
    } 
} 
+0

? csw = 1 – AndroidDev

관련 문제