Hello,

Thanks for the issue report. I'll send in a patch ASAP, in the meantime,
you can fix this by changing this
line<https://code.google.com/p/gdata-java-client/source/browse/trunk/java/src/com/google/gdata/util/AuthenticationException.java#96>
:
     if (authHeader == null)
      throw new NullPointerException("No authentication header information"
);

To return instead of throwing an exception.

Best,
Alain

On Fri, Jun 8, 2012 at 3:39 PM, Alexey Panteleev <[email protected]> wrote:

> Hello,
>
>  I have just started using ContactsService in a new way, with OAuth2,
> using GoogleCredential mechanism.
> Unfortunately it seems there is a bug in the gdata lib or the protocol!
> Whenever my token expires the library throws the NPE exception because "
> WWW-Authenticate" si not available in the response. So SessionExpiredException
> exception is never thrown and the credential's refreshToken listener is
> never called.
>
>  Any suggestions?
>
>
> >>>Token invalid - Invalid token: Stateless token expired<<<
>
> Exception in thread "main" java.lang.NullPointerException: No
> authentication header information
>
> at com.google.gdata.util.AuthenticationException.initFromAuthHeader(
> AuthenticationException.java:96)
>
> at com.google.gdata.util.AuthenticationException.<init>(
> AuthenticationException.java:67)
>
> at com.google.gdata.client.http.HttpGDataRequest.handleErrorResponse(
> HttpGDataRequest.java:608)
>
> at com.google.gdata.client.http.GoogleGDataRequest.handleErrorResponse(
> GoogleGDataRequest.java:564)
>
> at com.google.gdata.client.http.HttpGDataRequest.checkResponse(
> HttpGDataRequest.java:560)
>
> at com.google.gdata.client.http.HttpGDataRequest.execute(
> HttpGDataRequest.java:538)
>
> at com.google.gdata.client.http.GoogleGDataRequest.execute(
> GoogleGDataRequest.java:536)
>
> at com.google.gdata.client.Service.getFeed(Service.java:1135)
>
>
>
>
>
> GoogleCredential credential = new GoogleCredential.Builder()
>
>   .setTransport(new NetHttpTransport())
>
>   .setJsonFactory(new JacksonFactory())
>
>   .setClientSecrets(CLIENT_ID,
>
> CLIENT_SECRET)
>
>   .addRefreshListener(new CredentialRefreshListener() {
>
>
>    @Override
>
>   public void onTokenResponse(Credential credential,
>
>    TokenResponse tokenResponse) {
>
>    svc.setAccessToken(tokenResponse.getAccessToken());
>
>    if (tokenResponse.getRefreshToken() != null)
>
>    svc.setRefreshToken(tokenResponse.getRefreshToken());
>
>   }
>
>
>    @Override
>
>   public void onTokenErrorResponse(Credential credential,
>
>    TokenErrorResponse tokenErrorResponse) {
>
>    svc.setAccessToken(null);
>
>    svc.setRefreshToken(null);
>
>   }
>
>   }).build();
>
>
>  credential.setAccessToken(svc.getAccessToken());
>
>  credential.setRefreshToken(svc.getRefreshToken());
>
> myService = new ContactsService("App-1");
>
> myService.setOAuth2Credentials(credential);
>
> --
> You received this message because you are subscribed to the Google
> Groups "Google Contacts, Shared Contacts and User Profiles APIs" group.
> To post to this group, send email to
> [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://code.google.com/apis/contacts/community/forum.html
>



-- 
Alain Vongsouvanh | Developer Programs Engineer

-- 
You received this message because you are subscribed to the Google
Groups "Google Contacts, Shared Contacts and User Profiles APIs" group.
To post to this group, send email to
[email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://code.google.com/apis/contacts/community/forum.html

Reply via email to