2014-12-04 5 views
5

मेरा अंतिम लक्ष्य Google जीमेल एपीआई के माध्यम से खुद को ईमेल भेजना है।टोकन (ओएथ Google एपीआई) में सेगमेंट की गलत संख्या

और यहां मेरी समस्या है।

जब मैं अपने पहुँच टोकन एक त्रुटि पॉप अप होता है

Fatal error: Uncaught exception 'Google_Auth_Exception' with message 'Wrong number of segments in token: ' 

मैं यहाँ पढ़ Cloud endpoints oauth2 errorहै कि "इसका मतलब यह नहीं अपने टोकन अमान्य था", लेकिन मैं एक गंभीर त्रुटि हो रही है हो रही है कि मेरी लिपि में बाधा डालना

मेरे पहुँच टोकन इस 4/MqiIIl5K4S3D4iiieHshQt5D4M79oo07SbhMn22oe2o.cswa8t9ZuDAfJvIeHux6iLYXpNQmlAI

तरह लग रहा है अगर मैं मैं एक और त्रुटि है, जो

'Error fetching OAuth2 access token, message: 'invalid_grant: Invalid code.' 

यहाँ प्राप्त होता इस टोकन के साथ पेज को ताज़ा मेरी कोड

है
<?php 

include_once "templates/base.php"; 
echo pageHeader("Simple API Access"); 

require_once realpath(dirname(__FILE__) . '/../autoload.php'); 


$client = new Google_Client(); 


$client_id = '114600397795-j5sn0gvsdrup0s8dcmsj49iojp3m9biu.apps.googleusercontent.com'; 
$client_secret = 'm3Dzankql_rs1OGICsA3Hbtc'; 
$redirect_uri = 'http://alupa.com/gmail/examples/simple-query.php'; 

$client->setClientId($client_id); 
$client->setClientSecret($client_secret); 
$client->setRedirectUri($redirect_uri); 

$client->addScope("https://www.googleapis.com/auth/gmail.readonly"); 
$client->addScope("https://mail.google.com/"); 

$apiKey = "AIzaSyCWXxrTshKsotxEYNZZCXxdVXhLeku55cw"; 
$client->setDeveloperKey($apiKey); 


if (isset($_GET['code'])) { 
    $client->authenticate($_GET['code']); 
    $_SESSION['access_token'] = $client->getAccessToken(); 
    //$redirect = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']; 
    //header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL)); 
}else{ 

$client->setApplicationName("Client_Gmail_Examples"); 

} 


if (isset($_SESSION['access_token']) && $_SESSION['access_token']) { 
    $client->setAccessToken($_SESSION['access_token']); 
} else { 
    $authUrl = $client->createAuthUrl(); 
} 

if ($client->getAccessToken()) { 
    $_SESSION['access_token'] = $client->getAccessToken(); 
    $token_data = $client->verifyIdToken()->getAttributes(); 
} 


?> 
<div class="box"> 
    <div class="request"> 
<?php 
if (isset($authUrl)) { 
    echo "<a class='login' href='" . $authUrl . "'>Connect Me!</a>"; 
} else { 
    echo "<a class='logout' href='?logout'>Logout</a>"; 
} 
?> 
    </div> 
</div> 

alupa.com मेरा स्थानीय डोमेन है और मुझे कोई समस्या नहीं दिख रही है कि

साथ मैं गूगल https://github.com/google/google-api-php-client से मूल पुस्तकालय का उपयोग कर रहा

+0

मुझे एक ही समस्या है। टोकन में सभी डेटा नहीं है। क्या आपने इसे हल किया? –

उत्तर

3

बदलें:

$token_data = $client->verifyIdToken()->getAttributes(); 

रहे हैं:

$tuan = $client->getAccessToken(); 
$token_data = $client->verifyIdToken($tuan->id_token); 
1

आप गुंजाइश openid जोड़ने की जरूरत है और फिर आप एक id_token मिल साथ ही पहुंच टोकन। फिर आप $ क्लाइंट के साथ आईडी टोकन का उपयोग करें-> सत्यापित करें IDToken

संबंधित मुद्दे