2016-11-15 16 views
0

ここでは、apiを使用してgoogle plusでサークルを作成します。円を作成するにはhttps://developers.google.com/+/domains/api/circles/insertのリンクがあります。 私は自分のコードを完璧にしました。エラー:403、GoogleでCirlcleを作成する際に禁止されているエラー

$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

サービスが管理コンソール内でオフになっている場合や、サークルを作成しようとしているユーザーがGoogle Plusのプロフィールを作成していない場合は、「403禁止」というエラーが返されます。以下は、Google PHP Client Libraryバージョン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=ja]これで問題が解決したらうれしいです! – Morfinismo

関連する問題