PHP Authorization fails when posting in google moment with plus

I tried to make a message for google plus a moment in php, I use the code below, but when I try to post, I get an authorization error, I do with codeignitter

<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); include_once 'base_controller.php'; class Gp_auth extends Base_controller { private $_gp_client; public function __construct() { parent::__construct(); $this->load->library('googleplus'); $this->_gp_client = $this->googleplus->client; } public function index() { if ($this->input->get_post('code')) { try { $this->_gp_client->authenticate($this->input->get_post('code')); $access_token = $this->_gp_client->getAccessToken(); $this->session->set_userdata('access_token', $access_token); redirect('/gp_auth/me'); } catch (Google_Auth_Exception $e) { _print($e); } } else { $this->_gp_client->addScope(array( 'https://www.googleapis.com/auth/plus.login', 'https://www.googleapis.com/auth/plus.moments.write' )); $this->_gp_client->setRequestVisibleActions('http://schemas.google.com/AddActivity'); try { echo anchor($this->_gp_client->createAuthUrl(), 'Conect Me'); } catch (Google_Auth_Exception $e) { _print($e); } } } public function me() { try { $this->_gp_client->setAccessToken($this->session->userdata('access_token')); $response = $this->googleplus->plus->people->get('me'); _print($response->id); $post_data = array( 'gp_id' => $response->id, 'gp_access_token' => $this->session->userdata('access_token'), 'post_body' => 'Hello Google moment', 'post_attachment' => '' ); $this->load->library('sns_post'); echo $this->sns_post->gp_post($post_data); } catch (Google_Auth_Exception $e) { _print($e); } } 

}

The index function was for authentication and 'me' for post-moment

and below is the code for the library code of the instant message called from me by the function

 public function gp_post($post_data) { $this->_CI->load->library('googleplus'); _print($post_data['gp_access_token']); $this->_CI->googleplus->client->setAccessToken($post_data['gp_access_token']); $this->_CI->googleplus->client->setRequestVisibleActions('http://schemas.google.com/AddActivity'); $this->_CI->googleplus->item_scope->setId($post_data['gp_id']); $this->_CI->googleplus->item_scope->setType("http://schema.google.com/AddAction"); $this->_CI->googleplus->item_scope->setName("The Google+ Platform"); $this->_CI->googleplus->item_scope->setDescription($post_data['post_body']); if (!empty($post_data['post_attachment'])) { $this->_CI->googleplus->item_scope->setImage($post_data['post_attachment']); } $this->_CI->googleplus->moment_body->setTarget($this->_CI->googleplus->item_scope); // Execute the request try { $momentResult = $this->_CI->googleplus->plus->moments->insert('me', 'vault', $this->_CI->googleplus->moment_body); _print($momentResult); } catch (Google_Auth_Exception $e) { _print($e); } catch (Google_Service_Exception $servic_exception) { _print($servic_exception); } if ($response->meta->status == 201) { return $response->response->id; } else { return false; } 
+6
source share
1 answer

I think you received an authorization error due to the following reason -

  • Do not set the email id and project name using the link to the developer console APIs & Auth->Consent Screen .
  • You call the deprecated API $this->_CI->googleplus->item_scope->setId($post_data['gp_id']); . To call this, you must use this class new Google_Service_Plus_ItemScope();
  • $this->_CI->googleplus->moment_body->setTarget($this->_CI->googleplus->item_scope); . To call this method, you must use this class new Google_Service_Plus_Moment() ;
  • I have a demo code to install in git for you. Google-Plus-API-Codeigniter-Starter . You can use the same code to start. I also provided detailed instructions in the git repository.
  • You need to register your application using the Google Console settings, as shown below:

    • Go to the Google Developer Console
    • Create project
    • Get the Google+ API . Access: API and Auth-> API β†’ enable Google+ API
    • To get client_id and client_secret follow the links: API and Auth-> Credentials-> Create a new client identifier
    • To get api_key , follow the links: API and Auth-> Credentials-> Create New Key-> Browser
    • Get application_name follow the link: API and Auth-> Consent Screen
      • Set Email
      • The product's name

Note. . Make sure that you have all the necessary access from Google, as indicated in paragraph 5

Conclustion: Use the latest google-api-php-client client. And trying to call the method in an older way. Therefore, it does not work.

+2
source

Source: https://habr.com/ru/post/974826/


All Articles