2014-09-04 8 views
6

Stavo cercando di creare un post per google plus in php, sto usando il codice sottostante, ma quando provo a post ho ricevuto un errore di autorizzazione, sto facendo con il codeignitterAutorizzazione PHP fallita quando post in google momento con plusapi

<?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); 
    } 
} 

}

funzione indice è stato per l'autenticazione e 'me' funzione per il momento per la post

e sotto il codice per il codice libreria di momento post, che viene chiamato da me funzionano

0.123.
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; 
    } 
+0

Anche io sto affrontando lo stesso problema. –

+1

Qual è l'errore specifico che stai ottenendo? –

+0

Quali sono le librerie che stai utilizzando? potresti postare il link ad esso? – Chococroc

risposta

2

Credo che bisogna ottenere errore di autorizzazione a causa del seguente motivo -

  1. Non impostazione e-mail id & nome del progetto utilizzando Console per gli sviluppatori di collegamento APIs & Auth->Consent Screen.
  2. Si sta chiamando l'API deprecata $this->_CI->googleplus->item_scope->setId($post_data['gp_id']);. Per chiamare questo devi usare questa classe new Google_Service_Plus_ItemScope();
  3. $this->_CI->googleplus->moment_body->setTarget($this->_CI->googleplus->item_scope);. Per chiamare questo metodo devi usare questa classe new Google_Service_Plus_Moment();
  4. Ho installato il codice demo in git per te. Google-Plus-API-Codeigniter-Starter. Puoi usare lo stesso codice per iniziare. Ho fornito istruzioni dettagliate anche nel repository git.
  5. è necessario registrare l'applicazione utilizzando Impostazioni della console di Google, come di seguito:

    • Vai Google Developer Console
    • Crea progetto
    • ottenere Google+ API Accesso vai a: API & Auth- > API -> attiva l'API di Google+
    • Per ottenere client_id & client_secret vai a: API & Auth-> Credentials-> Crea nuovo ID client
    • ottenere api_key vai a: API & Auth-> Credentials-> Crea nuovo Key-> Browser chiave
    • per ottenere application_name vai a: API & Auth-> consenso schermo
      1. Imposta indirizzo e-mail
      2. Prod Nome UCT

Nota: Assicurarsi di avere ottenere tutto l'accesso richiesto da parte di Google di cui al punto

Conclustion: Si utilizza Ultime google-api -paziente client-php. E provare a chiamare il metodo in un modo più vecchio. Quindi non funziona.

+0

il repository github del codeignitter googleplusapi che usa i metodi depreceated, il che non funziona ora, ho già testato questi metodi. Seguo anche il secondo link che offri prima, non funziona, e sto usando la stessa libreria che puoi vedere nei miei commenti prima di –

+1

@KishorDgupta Ho cambiato la risposta. Imposta anche il repository git per te.Verifica questo link https://github.com/rajeshujade/google-plus-api-codeigniter-starter –

+0

ok, fammi implementare questi, ti farò sapere i risultati, grazie per l'aiuto –

Problemi correlati