在Google Apps脚本HTML服务中切换帐户

时间:2016-09-29 11:35:17

标签: google-apps-script

我试图允许我的Google Apps脚本网络应用的用户切换Google帐户。我尝试通过超链接将用户发送到帐户选择器:

<a href="https://accounts.google.com/AccountChooser?continue=https://script.google.com/a/macros/[domain]/s/[site_id]/exec">Switch Accounts</a>

如果用户在该屏幕上选择了另一个帐户,则用户将返回在原始帐户下登录的仍然的网络应用。

我做错了什么,或者是否有其他方式允许用户在网络应用中切换帐户?

1 个答案:

答案 0 :(得分:0)

虽然您可能需要Google Apps Script HTML Service来提供可与自定义用户界面的服务器端Apps脚本功能交互的网页,但您可能还需要Admin SDK's Directory API来管理用户。

如文件中所述,

  

Admin SDK目录服务允许您在Apps脚本中使用Admin SDK的目录API。此API为Google Apps域(包括经销商)管理员提供了管理其域中的设备,组,用户和其他实体的功能。

首先,您可以使用users: list列出所有可能的用户。例如,您可以列出域中的用户,这些用户可以按名字排序:

function listAllUsers() {
  var pageToken, page;
  do {
    page = AdminDirectory.Users.list({
      domain: 'example.com',
      orderBy: 'givenName',
      maxResults: 100,
      pageToken: pageToken
    });
    var users = page.users;
    if (users) {
      for (var i = 0; i < users.length; i++) {
        var user = users[i];
        Logger.log('%s (%s)', user.name.fullName, user.primaryEmail);
      }
    } else {
      Logger.log('No users found.');
    }
    pageToken = page.nextPageToken;
  } while (pageToken);
}

然后,使用users: getretrieve a user

以下是通过电子邮件地址获取用户并将所有数据记录为JSON字符串的示例代码。

function getUser() {
  var userEmail = 'liz@example.com';
  var user = AdminDirectory.Users.get(userEmail);
  Logger.log('User data:\n %s', JSON.stringify(user, null, 2));
}

此外,请注意Directory API: Prerequisites还需要Authorize requests中所述的使用此API的授权。

这可能看起来有点令人困惑所以我建议您通过给定的链接获取更多信息。

快乐的编码!