使用Google Plus API获取用户组织

时间:2017-01-21 01:02:48

标签: php google-api google-plus google-api-php-client google-plus-domains

我正在尝试通过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+域名之前的G-Suite帐户。当我在较新的G Suite帐户上使用相同的脚本时,它将无效。我试过$service = new Google_Service_Plus($client);,结果是一样的。知道为什么它不适用于较新的G Suite帐户吗?是否有其他人有同样的问题?

1 个答案:

答案 0 :(得分:0)

确定。我找到了问题的根本原因。恰好User ResourcePeople Resource是两种不同的资源。它们都具有“组织”属性,但用户资源的信息不会出现在您的Google Plus配置文件中,并且为了填充人力资源的“组织”属性,用户需要手动更新来自Google Plus中的“关于我”页面。目前,似乎没有办法以编程方式更新人力资源的信息,但用户必须手动更新。