2016-11-15 9 views
0

Здесь я хочу создать круг в google плюс с помощью api. Я получил https://developers.google.com/+/domains/api/circles/insert ссылку для создания круга. Я сделал свой код с совершенным.Ошибка: 403, Запрещенная ошибка при создании cirlcle в Google plus

$headers = array 
     (
     'Content-Type: application/json' 
    ); 

     $ch = curl_init(); 
     # Setup request to send json via POST. 
     $jsonData = json_encode(array("displayName"=> "abc")); 
     //echo "https://www.googleapis.com/plusDomains/v1/people/".$socialuserId."/circles?access_token=".$accessToken;exit; 
     curl_setopt($ch, CURLOPT_URL, "https://www.googleapis.com/plusDomains/v1/people/".$socialuserId."/circles?access_token=".$accessToken); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData); 
     curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
     curl_setopt($ch, CURLOPT_POST, true); 
     # Return response instead of printing. 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
     # Send request. 
     $result = curl_exec($ch); 
     curl_close($ch); 

Здесь $socialuserId и $accessToken я получаю право. Но я получаю Forbidden Error, как показано ниже.

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

В чем причина этой ошибки? Спасибо в продвинутом режиме.

ответ

1

Ошибка «403 запрещена» может быть возвращена, если служба отключена внутри консоли администратора или если пользователь, с которым вы пытаетесь создать круг, не создал профиль Google Plus. Ниже приведен пример реализации с клиентской библиотекой Google PHP версии 2.0.3, но ваш код также должен работать.

<?php 

session_start(); 

//INCLUDE PHP CLIENT LIBRARY 
require_once "google-api-php-client-2.0.3/vendor/autoload.php"; 

$client = new Google_Client(); 
$client->setAuthConfig("client_credentials.json"); 
$client->setRedirectUri('http://' . $_SERVER['HTTP_HOST'] . '/createCircle.php'); 
$client->addScope(array(
    "https://www.googleapis.com/auth/plus.circles.write", 
    "https://www.googleapis.com/auth/plus.me") 
); 

if (isset($_SESSION['access_token']) && $_SESSION['access_token']) { 

    $client->setAccessToken($_SESSION['access_token']); 

    $service = new Google_Service_PlusDomains($client); 

    $circle = new Google_Service_PlusDomains_Circle(array(
     'displayName' => 'VIP Circle', 
     'description' => 'Best of the best' 
    ) 
    ); 

    $userId = 'me'; 

    $newcircle = $service->circles->insert($userId, $circle); 

    echo "Circle created: ".$newcircle->id." - ".$newcircle->selfLink; 

} else { 

    if (!isset($_GET['code'])) {  

      $auth_url = $client->createAuthUrl(); 
      header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL)); 

    } else { 

     $client->authenticate($_GET['code']); 
     $_SESSION['access_token'] = $client->getAccessToken(); 

     $redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/createCircle.php'; 
     header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL)); 

    } 

} 


?> 

Убедитесь рассмотреть следующие ссылки: https://developers.google.com/+/domains/authentication/scopes https://developers.google.com/+/domains/authentication/ https://support.google.com/a/answer/1631746?hl=en

Я надеюсь, что это помогает!

+0

Спасибо за ваш ответ. Нужно ли начинать сеанс? И где я должен назвать этот файл 'createCircle.php'? – Virb

+1

В приведенном выше примере вам нужно запустить сеанс, потому что там сохраняется токен доступа; но вы НЕОБХОДИМО создать сеанс. Вы также можете сохранить токен доступа в файл, и после аутентификации вы можете получить токен доступа из этого файла. Что касается 'createCircle.php', это просто пример. Вы можете называть его 'index.php',' myfile.php', 'test.php' или что хотите. Как я уже сказал, это всего лишь пример файла, хранящегося в корневом каталоге, чтобы он мог идеально соответствовать значению переменной $ redirect_uri. – Morfinismo

+1

Я только что проверил ваш код, и это сработало для меня. Это может означать только то, что у пользователя еще нет профиля Google Plus, или что служба отключена внутри консоли администратора. Пожалуйста, убедитесь, что служба включена, следуя инструкциям здесь [https://support.google.com/a/answer/1631746?hl=ru] Надеюсь, это решит вашу проблему! – Morfinismo

 Смежные вопросы

  • Нет связанных вопросов^_^