gdata oauth2 authorization NullPointerException: No authentication header 信息
gdata oauth2 authorization NullPointerException: No authentication header information
我正尝试在我的网络应用程序中使用 gdata+Oauth2 export/import google 联系人。该应用程序在 js 和 java 服务器端有一个客户端,通过 REST API 进行通信。 js端通过google获取如下数据
进行授权
{
state:"38c4ebb6-b763-4e98-969c-16a86221ec71",
access_token:"ya29.BwEGCaDeWTzGqIwewwlmWreAMZdgNNexN1efOVGDcyY0f-gzXUot51F-Tzy5BX39CwGpbrL3JGjQ",
token_type:"Bearer",
expires_in:"3600"
}
我正在尝试使用 access_token 通过以下方式获取联系人
ContactsService myService = new ContactsService(APP_NAME);
myService.setHeader("Authorization", "Bearer " + accessToken);
return GoogleDataUtils.getContactList(getContactFeed(myService));
哪里
private ContactFeed getContactFeed(ContactsService myService) throws ServiceException, IOException {
URL feedUrl = new URL(URL_FOR_FEED);
Query myQuery = new Query(feedUrl);
myQuery.setMaxResults(Integer.MAX_VALUE);
ContactFeed resultFeed = myService.getFeed(myQuery, ContactFeed.class);
return resultFeed;
}
但我得到的是
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)
at com.google.gdata.client.Service.getFeed(Service.java:1077)
at com.google.gdata.client.GoogleService.getFeed(GoogleService.java:676)
at com.google.gdata.client.Service.getFeed(Service.java:1034)
我找到了 SpreadsheetService
的已解决问题
gdata-java-client + oauth2 + access_token secret
但它对我不起作用。
你能指出我做错了什么吗?
任何帮助将不胜感激
谢谢
将此解决方法添加到您的 ContactService 初始化块
myService.getRequestFactory().setHeader("User-Agent", applicationName);
问题出在 JS 端的范围内 - 未设置。 Google 在 Oauth playground 上尝试过,获得了一个令牌并简单地对其进行了硬编码 - 它有效。将范围添加到 JS 端(任何 JS Oauth 库都支持它)后,我成功进行了身份验证。我建议遇到此类问题的每个人都尝试使用 Oauth playground 上生成的令牌进行身份验证,这将有助于解决问题并找到问题。
谢谢
我正尝试在我的网络应用程序中使用 gdata+Oauth2 export/import google 联系人。该应用程序在 js 和 java 服务器端有一个客户端,通过 REST API 进行通信。 js端通过google获取如下数据
进行授权{
state:"38c4ebb6-b763-4e98-969c-16a86221ec71",
access_token:"ya29.BwEGCaDeWTzGqIwewwlmWreAMZdgNNexN1efOVGDcyY0f-gzXUot51F-Tzy5BX39CwGpbrL3JGjQ",
token_type:"Bearer",
expires_in:"3600"
}
我正在尝试使用 access_token 通过以下方式获取联系人
ContactsService myService = new ContactsService(APP_NAME);
myService.setHeader("Authorization", "Bearer " + accessToken);
return GoogleDataUtils.getContactList(getContactFeed(myService));
哪里
private ContactFeed getContactFeed(ContactsService myService) throws ServiceException, IOException {
URL feedUrl = new URL(URL_FOR_FEED);
Query myQuery = new Query(feedUrl);
myQuery.setMaxResults(Integer.MAX_VALUE);
ContactFeed resultFeed = myService.getFeed(myQuery, ContactFeed.class);
return resultFeed;
}
但我得到的是
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)
at com.google.gdata.client.Service.getFeed(Service.java:1077)
at com.google.gdata.client.GoogleService.getFeed(GoogleService.java:676)
at com.google.gdata.client.Service.getFeed(Service.java:1034)
我找到了 SpreadsheetService
的已解决问题gdata-java-client + oauth2 + access_token secret
但它对我不起作用。
你能指出我做错了什么吗? 任何帮助将不胜感激
谢谢
将此解决方法添加到您的 ContactService 初始化块
myService.getRequestFactory().setHeader("User-Agent", applicationName);
问题出在 JS 端的范围内 - 未设置。 Google 在 Oauth playground 上尝试过,获得了一个令牌并简单地对其进行了硬编码 - 它有效。将范围添加到 JS 端(任何 JS Oauth 库都支持它)后,我成功进行了身份验证。我建议遇到此类问题的每个人都尝试使用 Oauth playground 上生成的令牌进行身份验证,这将有助于解决问题并找到问题。 谢谢