我正在使用 oauth2.0 库
(Google开源OAuth2库MswhXl8fVhTFUH_Q3UOJbXvxhMjh3Sh48
)
我也在使用SharedContactsApp library
(开源库MLbRKmnCytdiSBOmoaGe1DOVJ5jnXUK_T
)
我可以添加共享联系人也添加电话号码。 我也可以使用
SharedContactsApp.getContacts();
但是当我这样做时,我注意到我只收到了25个联系人,但我没有添加任何联系人,这些联系人也在域中并显示在联系人的“目录”选项中。
我创造了超过25个但是当我使用getContacts()
时,我只得到25个。
所以我决定使用getContactsForPaging
。
但是在使用SharedContactsApp.getContactsForPaging(Token);
时出现错误。
这就是我设置它的方式:
function listAllContacts() {
var sharedContactsService = getSharedContactsService();
var Token = sharedContactsService.getAccessToken();
SharedContactsApp.setOAuth2AccessToken(Token);
do {
var result = SharedContactsApp.getContactsForPaging(Token);
contacts = result.getContacts();
Token = result.getToken();
for (var i = 0; i < contacts.length; i++) {
Logger.log(contacts[i].getFullName());
}
} while (Token != null);
}
我做错了吗?
这是我的错误:
Exception: Request failed for https://www.google.com/m8/feeds/contacts/dev.whitestratus.com/full/ returned code 401.
Truncated server response: <html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Error 401 (Client Error)!!1</title> <style type="text/css"> ... (use muteHttpExceptions option to examine full response)
(line 239, file "Code", project "SharedContactsApp")
答案 0 :(得分:0)
您正在使用Token
来完成两件事。 OAuth2令牌和分页令牌有两个令牌。这应该解决它。
function listAllContacts() {
var sharedContactsService = getSharedContactsService();
var oaToken = sharedContactsService.getAccessToken();
SharedContactsApp.setOAuth2AccessToken(oaToken);
var Token = null;
var contacts = null;
do {
var result = SharedContactsApp.getContactsForPaging(Token);
contacts = result.getContacts();
Token = result.getToken();
for (var i = 0; i < contacts.length; i++) {
Logger.log(contacts[i].getFullName());
}
} while (Token != null);
}
答案 1 :(得分:0)
HTTP 401错误将与身份验证相关。我的猜测是你没有有效的OAuth访问权限。确认,
function tinyTest() {
Logger.log('hasAccess() is: %s', getSharedContactsService().hasAccess());
}
应该会产生'hasAccess() is: true'
。如果是false
,您需要做两件事:
test()
功能(此处的步骤6)确认您的设置,然后再继续使用或使用您自己的代码。如果test()
不起作用,您的代码也不会。如果您的test()
失败,我建议您在此处报告步骤2,3,4,5中的详细信息(但隐藏您的“客户机密”)。
编辑添加:
如果您的测试通过,那么您的OAuth似乎一切正常。运行以下代码以浏览所有联系人并登录。也许你有一些关于坏数据的联系方式。查看日志,您将看到第一个失败的联系人的ID。删除该联系人,然后重试,直到您没有错误。
function listAllContacts() {
SharedContactsApp.setOAuth2AccessToken(getSharedContactsService().getAccessToken());
var contacts = null;
var token = null;
do {
var result = SharedContactsApp.getContactsForPaging(token);
contacts = result.getContacts();
token = result.getToken();
for (var i = 0; i < contacts.length; i++) {
Logger.log(contacts[i].getId());
Logger.log(contacts[i].getGivenName());
Logger.log(contacts[i].getFamilyName());
Logger.log(contacts[i].getFullName());
}
} while (token != null);
}