Google API多个范围

roe*_*oev 8 javascript php jquery scope google-api

我想在Google API JavaScript中使用多个范围.我想要做的是获取用户的电子邮件和姓名.

我可以从范围获得名称:https://www.googleapis.com/auth/plus.me

我可以从范围获取电子邮件:https://www.googleapis.com/auth/userinfo.email

但是如何在同一个应用程序中使用它们呢?

我的代码是:

scopes = 'https://www.googleapis.com/auth/plus.me https://www.googleapis.com/auth/userinfo.email';

    gapi.signin.render('StartGoogleBtn', {
      'callback': 'onSignInCallback',
      'clientid': clientId,
      'cookiepolicy': 'single_host_origin',
      'scope': scopes
    });
Run Code Online (Sandbox Code Playgroud)

应该是什么范围?谢谢 :)

ama*_*mar 12

只是猜测,但尝试用围绕它的双引号分隔的空格.这就是OAuth 2所要求的,当我为客户端编写代码时,我会自动正确地处理该场景.我认为它只是通过命令传递.这对我有用.

scopes = "https://www.googleapis.com/auth/userinfo.email  https://www.googleapis.com/auth/plus.me"
Run Code Online (Sandbox Code Playgroud)


Dan*_*gio 3

我会在回答前说我没有使用过 Javascript 版本。我正在使用 Java 库,它允许我通过传递包含我想要的范围的字符串列表来设置范围。

List<String> SCOPES = Arrays.asList(
        DirectoryScopes.ADMIN_DIRECTORY_GROUP, //https://www.googleapis.com/auth/admin.directory.group
        DirectoryScopes.ADMIN_DIRECTORY_USER,  //https://www.googleapis.com/auth/admin.directory.user
        DriveScopes.DRIVE                      //https://www.googleapis.com/auth/drive
        );

credential = new GoogleCredential.Builder()
                .setTransport(httpTransport).setJsonFactory(jsonFactory)
                .setServiceAccountId(serviceAccountId)
                .setServiceAccountScopes(SCOPES)
                .setServiceAccountPrivateKeyFromP12File(p12File)
                .setServiceAccountUser(adminUser).build();
Run Code Online (Sandbox Code Playgroud)

假设 Javascript 库的工作方式与 Java 库类似,您应该能够通过将scopes变量设置为字符串数组来添加多个作用域。