Google Apps Profiles API: java.lang.NullPointerException:没有认


public ContactFeed retrieveContacts(ContactsService service,
                                    Credential credential) throws Exception {
    URL url = new URL("https://www.google.com/m8/feeds/profiles/domain/my.domain.com/full");
    service.setOAuth2Credentials(credential);
    service.useSsl();
    service.setHeader("GData-Version", "3.0");
    ContactFeed contactFeed = new ContactFeed();
    do {
        ContactFeed feedResult = service.getFeed(url, ContactFeed.class);
        contactFeed.getEntries().addAll(feedResult.getEntries());
        if (feedResult.getNextLink() != null && feedResult.getNextLink().getHref() != null
                && !feedResult.getNextLink().getHref().isEmpty()) {
            url = new URL(feedResult.getNextLink().getHref());
        } else {
            url = null;
        }
    } while (url != null);
    return contactFeed;
}

这是我的代码检索配置文件。当运行

这一行时
ContactFeed feedResult = service.getFeed(query, ContactFeed.class);

它将给出java.lang。NullPointerException: No authentication header information error。

我有谷歌网站,谷歌驱动器,谷歌应用程序配置,谷歌电子邮件设置运行良好与OAuth2。但是Google Apps Profile with OAuth2给出了java.lang。NullPointerException: No authentication header information。我上网查了一下,他们说这是个bug?他们所做的只是手动将AccessToken传递到header中。这个工作还有别的出路吗?因为我使用这个来运行在Cron作业,我使用OAuth2服务帐户。

= = = =

编辑:

我试着像这样强行使用set header:

service.setHeader("GData-Version", "3.0");
service.setUserCredentials(myusername, mypassword);

这工作刚刚好。service.setOAuth2Credentials()内部似乎有bug

我发现了service.setOAuth2Credentials()不能与构建新的Google凭据(使用P12File构建)一起工作的原因。

这是因为service.setOAuth2Credentials()不刷新TOKEN内部像其他服务在Google Sites, Google Drive等…

如果您使用P12File构建Google Credential,只需在构建Google Credential后添加这一行。

googleCredential.refreshToken();

我猜这是一个错误的ContactsService.setOAuth2Credentials()。

我在使用securesocial进行身份验证时遇到了这个问题。

在我的例子中,这个问题与securesocial配置中定义的范围有关。

不要忘记检查你是否为给定的标记使用了正确的作用域。

相关内容

  • 没有找到相关文章

最新更新