Intereting Posts
Загрузить в Chrome возвратите Aw, Snap-страницу SublimeLinter: PHP linting не работает Соединение Postgres происходит медленно с PHP Получить значение массива по строке ключей как выполнить php-код в javascript как извлечь закодированный DER-сертификат из строки base64 Автоматическое создание настраиваемых значений полей в WordPress Как вызвать функцию в PHP в другой форме? Услуги авторитетного гео-ip-сервиса move_uploaded_file дает сообщение об ошибке «не удалось открыть поток: разрешено» после всех конфигураций, которые я сделал Почему параметры запроса для многих веб-сайтов (MySQL) являются очень загадочными длинными целыми числами? Функция JQuery не указана при запуске php-скрипта разрешить круглые скобки и другие символы в регулярном выражении Установите / снимите флажок (Выбрать все), если все дочерние флажки выделены в этом div strip_tags () … заменять теги пробелом, а не удалять их

размещение в google plus через api

Пытаясь найти, как публиковать сообщения на Google+ стене с PHP, но получил 403, даже используя api explorer, получил

{ "error": { "errors": [ { "domain": "global", "reason": "forbidden", "message": "Forbidden" } ], "code": 403, "message": "Forbidden" } } 

Мой PHP-код выглядит так:

  $client = new \Google_Client(); $client->setApplicationName("Speerit"); $client->setClientId($appId); $client->setClientSecret($appSecret); $client->setAccessType("offline"); // offline access $client->setIncludeGrantedScopes(true); // incremental auth $client->setAccessToken( json_encode( array( 'access_token' => $accessToken, 'expires_in' => 3600, 'token_type' => 'Bearer', ) ) ); $client->setScopes( array( "https://www.googleapis.com/auth/userinfo.email", "https://www.googleapis.com/auth/plus.me", "https://www.googleapis.com/auth/plus.stream.write", ) ); $client = $client->authorize(); // create the URL for this user ID $url = sprintf('https://www.googleapis.com/plusDomains/v1/people/me/activities'); // create your HTTP request object $headers = ['content-type' => 'application/json']; $body = [ "object" => [ "originalContent" => "Happy Monday! #caseofthemondays", ], "access" => [ "items" => [ ["type" => "domain"], ], "domainRestricted" => true, ], ]; $request = new Request('POST', $url, $headers, json_encode($body)); // make the HTTP request $response = $client->send($request); // did it work?? echo $response->getStatusCode().PHP_EOL; echo $response->getReasonPhrase().PHP_EOL; echo $response->getBody().PHP_EOL; 

После официальной документации и некоторых ссылок с других должностей

Это было сложно для меня. Во-первых, нам нужно понять, что есть API для бесплатных учетных записей google, то есть учетные записи end @ gmail.com, и есть учетные записи API для G Suite, что означает, что счет заканчивается @ yourdomain.com . Основываясь на справочной документации и последних тестах, невозможно вставить комментарий с использованием API в бесплатные учетные записи google (@ gmail.com) .

Это возможно только с учетными записями G Suite * (@ yourdomain.com) *. Я должен был прочитать документацию для метода вставки , документацию о прямых HTTP-запросах и изучить, как ведет себя Guzzle Client . В любом случае, после 3 справедливых часов попыток я смог заставить его работать, следуя этой логике:

 <?php session_start(); require_once "vendor/autoload.php"; //include library //define scopes required to make the api call $scopes = array( "https://www.googleapis.com/auth/plus.me", "https://www.googleapis.com/auth/plus.stream.write" ); //create Google Client Object and set its configurations $client = new Google_Client(); $client->setRedirectUri('http://' . $_SERVER['HTTP_HOST'] . '/index.php'); $client->setAuthConfig("client_secrets.json"); $client->addScope($scopes); if (isset($_SESSION['access_token']) && $_SESSION['access_token']) { $client->setAccessToken($_SESSION['access_token']); $service = new Google_Service_PlusDomains($client); $activity = array( 'access' => array( 'items' => array( 'type' => 'domain' ), 'domainRestricted' => true ), 'verb' => 'post', 'object' => array( 'originalContent' => "Post using Google API PHP Client Library!" ), ); $options = array( "headers" => array( 'content-type' => 'application/json; charset=UTF-8' ), "body" => json_encode($activity) ); $httpClient = $client->authorize(); $request = $httpClient->request("POST", "https://www.googleapis.com/plusDomains/v1/people/me/activities", $options); $response = $request->getBody(); print_r($response->getContents()); } else { if (!isset($_GET['code'])) { //If access code is not defined $auth_url = $client->createAuthUrl(); // create authentication URL header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL)); } else { //If access code is defined $client->authenticate($_GET['code']); $_SESSION['access_token'] = $client->getAccessToken(); $redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/index.php'; header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL)); } } ?> 

В общем, если вы попытаетесь сделать это на бесплатной учетной записи gmail.com, вы получите 403 Forbidden ошибку. Надеюсь, в будущем это будет доступно, но пока невозможно.