使用 user.profile 和 user.email 范围和 /oauth2/v2/userinfo 提要似乎不会返回任何自定义字段(在我的情况下是部门)或电话号码。这些字段显示在域共享联系人目录中。
是否有类似 /oauth2/{DOMAIN}/v2/userinfo 之类的特定于应用程序域的提要 URL?
API/服务是否还不支持任何自定义字段?
有没有办法把它变成工作?
读取与您的帐户相关联的您自己的应用程序域共享联系人配置文件的权限应该不会那么困难。
我更喜欢非管理员解决方案,因为我的域使用带 SAML 身份验证的通用访问卡,因此我不能只将管理员凭据(用户:密码)存储在 App Engine 应用程序中并访问 /m8/ 提要。如果有使用预先授权的消费者密钥和秘密访问域共享联系人(带有自定义字段)的流程,我会对使其工作的说明感兴趣。
编辑Jay Lee 将其钉在“ https://www.google.com/m8/feeds/gal/ {domain}/full”
这是使用 Google Apps 脚本的概念证明脚本(我将在完成后添加最终的 OAuth2 版本)
function getGal(email, passwd, domain) {
var res = UrlFetchApp.fetch("https://www.google.com/accounts/ClientLogin", {
contentType: "application/x-www-form-urlencoded",
method: "post",
payload: { "Email": email, "Passwd": passwd, "accountType": "HOSTED", "service":"cp" }
});
var auth = res.getContentText().match(/Auth=(.*)/i)[1];
Logger.log("Auth: " + auth);
res = UrlFetchApp.fetch("https://www.google.com/m8/feeds/gal/" + domain + "/full", {
method: "get",
headers: { "Authorization": "GoogleLogin auth=" + auth, "GData-Version": "1.0" }
});
Logger.log(res.getHeaders());
Logger.log(res.getContentText());
}
编辑 2 OAuth 版本,返回 JSON 和仅用户访问脚本的信息。
function googleOAuthM8() {
var oAuthConfig = UrlFetchApp.addOAuthService("m8");
oAuthConfig.setRequestTokenUrl('https://www.google.com/accounts/OAuthGetRequestToken?scope=https://www.google.com/m8/feeds/');
oAuthConfig.setAuthorizationUrl('https://www.google.com/accounts/OAuthAuthorizeToken');
oAuthConfig.setAccessTokenUrl('https://www.google.com/accounts/OAuthGetAccessToken');
oAuthConfig.setConsumerKey('anonymous');
oAuthConfig.setConsumerSecret('anonymous');
return {oAuthServiceName:"m8", oAuthUseToken:'always'};
}
function getGal(domain) {
res = UrlFetchApp.fetch("https://www.google.com/m8/feeds/gal/" + domain + "/full?alt=json&q=" + Session.getActiveUser().getEmail(), googleOAuthM8());
Logger.log(res.getHeaders());
Logger.log(res.getContentText());
}