使用 Google 和 API 获取用户组织
Get User Organizations with Google Plus API
我正在尝试从具有 Google+ API 或 Google+ 域 API 的用户处获取组织。我正在按照官方文档中的步骤进行操作,我使用的逻辑是:
<?php session_start();
require_once 'vendor/autoload.php'; //INCLUDE PHP CLIENT LIBRARY
$scopes = array(
"https://www.googleapis.com/auth/plus.profiles.read",
"https://www.googleapis.com/auth/plus.me"
);
// Create client object and set its configuraitons
$client = new Google_Client();
$client->setRedirectUri('http://' . $_SERVER['HTTP_HOST'] . '/');
$client->setAuthConfig("creds.json");
$client->addScope($scopes);
if( isset($_SESSION["access_token"]) ) {
$client->setAccessToken($_SESSION["access_token"]);
$service = new Google_Service_PlusDomains($client);
$me = $service->people->get('me');
var_dump($me);
echo "<br><br>*********************************************<br><br>";
$orgs = $me->getOrganizations(); // (THIS IS EMPTY!!!) ????
var_dump($orgs);
} else {
if( !isset($_GET["code"]) ){
$authUrl = $client->createAuthUrl();
header('Location: ' . filter_var($authUrl, FILTER_SANITIZE_URL));
} else {
$client->authenticate($_GET['code']);
$_SESSION['access_token'] = $client->getAccessToken();
$redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/';
header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
}
}
?>
这非常适合我在 Google+ 到 Google+ Domains。当我在较新的 G Suite 帐户上使用相同的脚本时,它不会起作用。我试过 $service = new Google_Service_Plus($client);
结果是一样的。知道为什么它不能与较新的 G Suite 帐户一起使用吗?还有其他人遇到同样的问题吗?
好的。我找到了问题的根本原因。碰巧 User Resource and the People Resource 是两种不同的资源。它们都有 "organization" 属性,但是用户资源的信息不会出现在您的 Google Plus 个人资料中,为了填充人员资源的 "organization" 属性,用户是需要从 Google Plus 中的 "about me" 页面手动更新信息。目前,似乎没有办法以编程方式更新人力资源的信息,但用户必须手动进行。
我正在尝试从具有 Google+ API 或 Google+ 域 API 的用户处获取组织。我正在按照官方文档中的步骤进行操作,我使用的逻辑是:
<?php session_start();
require_once 'vendor/autoload.php'; //INCLUDE PHP CLIENT LIBRARY
$scopes = array(
"https://www.googleapis.com/auth/plus.profiles.read",
"https://www.googleapis.com/auth/plus.me"
);
// Create client object and set its configuraitons
$client = new Google_Client();
$client->setRedirectUri('http://' . $_SERVER['HTTP_HOST'] . '/');
$client->setAuthConfig("creds.json");
$client->addScope($scopes);
if( isset($_SESSION["access_token"]) ) {
$client->setAccessToken($_SESSION["access_token"]);
$service = new Google_Service_PlusDomains($client);
$me = $service->people->get('me');
var_dump($me);
echo "<br><br>*********************************************<br><br>";
$orgs = $me->getOrganizations(); // (THIS IS EMPTY!!!) ????
var_dump($orgs);
} else {
if( !isset($_GET["code"]) ){
$authUrl = $client->createAuthUrl();
header('Location: ' . filter_var($authUrl, FILTER_SANITIZE_URL));
} else {
$client->authenticate($_GET['code']);
$_SESSION['access_token'] = $client->getAccessToken();
$redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/';
header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
}
}
?>
这非常适合我在 Google+ 到 Google+ Domains。当我在较新的 G Suite 帐户上使用相同的脚本时,它不会起作用。我试过 $service = new Google_Service_Plus($client);
结果是一样的。知道为什么它不能与较新的 G Suite 帐户一起使用吗?还有其他人遇到同样的问题吗?
好的。我找到了问题的根本原因。碰巧 User Resource and the People Resource 是两种不同的资源。它们都有 "organization" 属性,但是用户资源的信息不会出现在您的 Google Plus 个人资料中,为了填充人员资源的 "organization" 属性,用户是需要从 Google Plus 中的 "about me" 页面手动更新信息。目前,似乎没有办法以编程方式更新人力资源的信息,但用户必须手动进行。