关于获取访问用户电子邮件的权限

时间:2017-03-17 02:55:41

标签: php google-api google-drive-api google-oauth google-api-php-client

我正在使用Google API PHP客户端来访问Google Drive API。

我的问题是我想获得访问用户电子邮件的权限。但是,身份验证屏幕未显示我正在寻求的权限。它只显示“应用程序希望......具有离线访问权限。但是当从Google API操场上完成时,它会正确显示对用户电子邮件提示的访问权限。

所以我认为在创建身份验证网址时我的代码级别出了问题。请帮我解决这个问题。

        $client = new Google_Client();

        $guzzleClient = new \GuzzleHttp\Client(array( 'curl' => array( CURLOPT_SSL_VERIFYPEER => false, ), ));
        $client->setHttpClient($guzzleClient);
        $client->setAuthConfig($oauth_credentials);

        $client->setRedirectUri($redirect_uri);
        $client->setAccessType('offline');
        $client->setApprovalPrompt('force');
        $client->setState($this->uri->segment(3));
        $client->addScope("https://www.googleapis.com/auth/drive");

1 个答案:

答案 0 :(得分:3)

如果你想要的只是当前认证用户的电子邮件地址,你可以直接浏览google drive api。

About.get方法获取有关用户,用户的云端硬盘和系统功能的信息。

{
 "user": {
  "kind": "drive#user",
  "displayName": "Linda Lawton",
  "photoLink": "xxxx",
  "me": true,
  "permissionId": "xxxx",
  "emailAddress": "xxxx@gmail.com"
 }
}

关于范围的旁注:

Scopes告诉用户您想要访问哪些数据。 https://www.googleapis.com/auth/drive基本上表示您希望完全访问其Google云端硬盘帐户https://www.googleapis.com/auth/classroom.profile.emails会请求访问其电子邮件地址。

离线访问

'离线'告诉用户您希望能够在不使用您的应用程序时访问其帐户。通过添加此功能,您将收到一个刷新令牌,您可以随时保存并使用该令牌来获取新的访问令牌以访问用户数据。