Joe*_*210 2 php google-api google-api-php-client google-admin-sdk
哇,我到处搜索,找不到这个问题的“好”答案。这让我相信这很容易,没有人问,我很愚蠢,或者没有人能弄清楚。
当用户加入我们的网站时,我们希望在新用户注入过程中也将他们添加到我们的谷歌群组页面。我这里有这段代码,用于列出用户(尝试这样做只是为了让我开始)
$start = microtime(true);
require_once __DIR__ . '/google-api-php-client-2.2.1/vendor/autoload.php';
session_start();
date_default_timezone_set('America/Los_Angeles');
$REDIRECT_URI = 'http://localhost:8080';
$KEY_LOCATION = __DIR__ . '/client_secret.json';
$TOKEN_FILE = "token.txt";
$SCOPES = array(
Google_Service_Directory::ADMIN_DIRECTORY_GROUP_MEMBER
);
$client = new Google_Client();
$client->setApplicationName("Testing stuff");
$client->setAuthConfig($KEY_LOCATION);
// Incremental authorization
$client->setIncludeGrantedScopes(true);
$client->setAccessType('offline');
$client->setRedirectUri($REDIRECT_URI);
$client->setScopes($SCOPES);
$client->setAccessToken($_SESSION['accessToken']);
Run Code Online (Sandbox Code Playgroud)
这就是我所得到的,请怜悯我。
*** 更新 ***
我现在已经走到这一步了,感觉自己更接近了。
<?php
require_once('google-api-php-client-2.2.1_PHP54/vendor/autoload.php');
$impersonateUser = 'XXX';
define('SCOPES', implode(' ', array(
Google_Service_Directory::ADMIN_DIRECTORY_GROUP_MEMBER) ));
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . 'c_json' );
$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->setSubject($impersonateUser);
$client->setScopes(SCOPES);
$dir = new Google_Service_Directory_Member($client);
$gPrimaryEmail = 'bob@bob.com';
$newUser = array( "email" => "bobby90210@bob.com", "role" => "MEMBER");
$results = $dir->members->insert($newUser);
print_r($results);
PHP Fatal error: Call to a member function insert() on a non-object in /var/www/newUserForGroup/addUser.php on line 19
Run Code Online (Sandbox Code Playgroud)
*** 解决了 ***
我非常厌恶谷歌的整个系统是一个混乱的大混乱,答案为零,我设法弄清楚了这一点。如果其他人也有这个问题,就是这样。
<?php
require_once('google-api-php-client-2.2.1_PHP54/vendor/autoload.php');
$impersonateUser = 'USER_EMAIL_WITH_ADMIN_ACCESS';
define('SCOPES', implode(' ', array(
Google_Service_Directory::ADMIN_DIRECTORY_GROUP_MEMBER))); // scope needed for function
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . 'json_c' ); // your json file
$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->setSubject($impersonateUser);
$client->setScopes(SCOPES);
$key = "theaddress@theaddress.com"; // Your google groups "Healthtips@healthnow.com"
$service = new Google_Service_Directory($client);
$user = new Google_Service_Directory_Member(array('email' => 'ickabod@crane.com',
'kind' => 'admin#directory#member',
'role' => 'MEMBER',
'type' => 'USER'));
$list = $service->members->insert($key, $user);
Run Code Online (Sandbox Code Playgroud)
现在我还必须提到,我遇到问题的主要原因是我没有正确设置域范围委派。您可以在此处了解如何执行此操作
* 解决了 *
我非常厌恶谷歌的整个系统是一个混乱的大混乱,答案为零,我设法弄清楚了这一点。如果其他人也有这个问题,就是这样。
<?php
require_once('google-api-php-client-2.2.1_PHP54/vendor/autoload.php');
$impersonateUser = 'USER_EMAIL_WITH_ADMIN_ACCESS';
define('SCOPES', implode(' ', array(
Google_Service_Directory::ADMIN_DIRECTORY_GROUP_MEMBER))); // scope needed for function
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . 'json_c' ); // your json file
$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->setSubject($impersonateUser);
$client->setScopes(SCOPES);
$key = "theaddress@theaddress.com"; // Your google groups "Healthtips@healthnow.com"
$service = new Google_Service_Directory($client);
$user = new Google_Service_Directory_Member(array('email' => 'ickabod@crane.com',
'kind' => 'admin#directory#member',
'role' => 'MEMBER',
'type' => 'USER'));
$list = $service->members->insert($key, $user);
Run Code Online (Sandbox Code Playgroud)
现在我还必须提到,我遇到问题的主要原因是我没有正确设置域范围委派。您可以在此处了解如何执行此操作
干杯。