代码之家  ›  专栏  ›  技术社区  ›  Vetrivel Pandiyarajan

如何使用php在googlemybusiness页面上创建本地帖子

  •  3
  • Vetrivel Pandiyarajan  · 技术社区  · 7 年前

    我需要创建一个本地主机使用谷歌客户端api。我写了下面的代码来包装本地邮件。

    $service = new Google_Service_MyBusiness($client);
    $callToAction = new Google_Service_MyBusiness_CallToAction();
    $callToAction->setActionType('LEARN_MORE');
    $callToAction->setUrl('localhost.com');
    $mediaItem = new Google_Service_MyBusiness_MediaItem();
    $mediaItem->setMediaFormat('PHOTO');
    $mediaItem->setSourceUrl('https://www.theanthem.com/images/usps_eddm_postcards.jpg');
    $localPost = new Google_Service_MyBusiness_LocalPost();
    $localPost->setLanguageCode('en-US');
    $localPost->setSummary('Just a summary');
    $localPost->setCallToAction($callToAction);
    $localPost->setMedia($mediaItem);
    $parent = sprintf('accounts/%d/locations/%d',
    '116633170334837786295',
    '8830395735149945322'
    );
    $service->accounts_locations_localPosts->create($parent, $localPost); 
    

    但不幸的是我犯了以下错误。

    我的错误:消息:错误调用POST https://mybusiness.googleapis.com/v4/accounts/9223372036854775807/locations/8830395735149945322/localPosts : (400)请求包含无效参数。

    我怎样才能解决这个问题?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Vetrivel Pandiyarajan    7 年前

    我找到了答案:

    创建刷新令牌

     $request_url = "https://www.googleapis.com/oauth2/v4/token";
     $refresh_token = "*** Refresf Token ***";
     $params = [
                'client_id'     => "***your client id***",
                'client_secret' => "***your clinet secret id***",
                'refresh_token' => $refresh_token,
                'grant_type'    => "refresh_token"
              ];
      $curl = curl_init($request_url);
      curl_setopt($curl, CURLOPT_HEADER, true);
      curl_setopt($curl, CURLINFO_HEADER_OUT, true);
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($curl, CURLOPT_POST, true);
      curl_setopt($curl, CURLOPT_HEADER,'Content-Type: application/x-www-form-urlencoded');
      $postData = "";
      //This is needed to properly form post the credentials object
      foreach($params as $k => $v) {
        $postData .= $k . '='.urlencode($v).'&';
      }
      $postData = rtrim($postData, '&');
      curl_setopt($curl, CURLOPT_POSTFIELDS, $postData);
      $json_response = curl_exec($curl);
      $response = (array) json_decode( $json_response );
      $myaccess_token = $response['access_token'];
    

    $location = 'accounts/accoutid/locations/location id';
    $api_end_point_url = 'https://mybusiness.googleapis.com/v4/'.$location.'/localPosts';
    $postfields = array(
    'topicType' => "STANDARD",
    'languageCode' => "en_US",
    'summary' => 'test post 123',
    );
    $data_string = json_encode($postfields); 
    $ch = curl_init();      
    curl_setopt($ch, CURLOPT_URL, $api_end_point_url);      
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);     
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Bearer '. $myaccess_token,'Content-Type: application/json'));
    $data1 = json_decode(curl_exec($ch), true);
    $http_code1 = curl_getinfo($ch, CURLINFO_HTTP_CODE);