2016-02-04 9 views
0

Когда я нажимаю на <a>, который стоит в main.php, чтобы импортировать контакты, и я нажимаю кнопки приема google, поэтому я разрешаю им видеть мои контакты. И затем, когда я вернусь на собственную страницу ... он вообще не показывает никаких контактов. Я думаю, это потому, что я не возвращаю никаких контактов, но я не знаю, как это сделать.У меня на сайте нет контактов.

app.yaml:

application: csimporttest 
version: 1 
runtime: php55 
api_version: 1 

handlers: 
- url: /.* 
    script: main.php 

main.php:

<!DOCTYPE html> 
    <html> 

    <head> 
    </head> 

    <body> 
    <h2>Hi!</h2> 

    <?php include('response-callback.php');?> 

    <a href="<?php echo $googleImportUrl;?>"> Import </a> 

    </body> 

    </html> 

отклика callback.php;

<?php 

session_start(); 

require_once 'google-api-php-client-master/src/Google/autoload.php'; 

$google_client_id = 'SECRET'; 
$google_client_secret = 'SECRET'; 
$google_redirect_uri = 'https://csimporttest.appspot.com/response-callback.php'; 

//setup new google client 
$client = new Google_Client(); 
$client -> setApplicationName('csimporttest'); 
$client -> setClientid($google_client_id); 
$client -> setClientSecret($google_client_secret); 
$client -> setRedirectUri($google_redirect_uri); 
$client -> setAccessType('online'); 

$client -> setScopes('https://www.googleapis.com/auth/contacts.readonly'); 

$googleImportUrl = $client -> createAuthUrl(); 

function curl($url, $post = "") { 
    $curl = curl_init(); 
    $userAgent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)'; 
    curl_setopt($curl, CURLOPT_URL, $url); 
    //The URL to fetch. This can also be set when initializing a session with curl_init(). 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); 
    //TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly. 
    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5); 
    //The number of seconds to wait while trying to connect. 
    if ($post != "") { 
     curl_setopt($curl, CURLOPT_POST, 5); 
     curl_setopt($curl, CURLOPT_POSTFIELDS, $post); 
    } 
    curl_setopt($curl, CURLOPT_USERAGENT, $userAgent); 
    //The contents of the "User-Agent: " header to be used in a HTTP request. 
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE); 
    //To follow any "Location: " header that the server sends as part of the HTTP header. 
    curl_setopt($curl, CURLOPT_AUTOREFERER, TRUE); 
    //To automatically set the Referer: field in requests where it follows a Location: redirect. 
    curl_setopt($curl, CURLOPT_TIMEOUT, 10); 
    //The maximum number of seconds to allow cURL functions to execute. 
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); 
    //To stop cURL from verifying the peer's certificate. 
    $contents = curl_exec($curl); 
    curl_close($curl); 
    return $contents; 
} 

//google response with contact. We set a session and redirect back 
if (isset($_GET['code'])) { 
    $auth_code = $_GET["code"]; 
    $_SESSION['google_code'] = $auth_code; 
    header('Location: ' . $google_redirect_uri); 
} 

if(isset($_SESSION['google_code'])) { 
    $auth_code = $_SESSION['google_code']; 
    $max_results = 200; 
    $fields=array(
     'code'=> urlencode($auth_code), 
     'client_id'=> urlencode($google_client_id), 
     'client_secret'=> urlencode($google_client_secret), 
     'redirect_uri'=> urlencode($google_redirect_uri), 
     'grant_type'=> urlencode('authorization_code') 
    ); 
    $post = ''; 
    foreach($fields as $key=>$value) 
    { 
     $post .= $key.'='.$value.'&'; 
    } 
    $post = rtrim($post,'&'); 
    $result = curl('https://www.googleapis.com/oauth2/v4/token',$post); 
    $response = json_decode($result); 
    $accesstoken = $response->access_token; 
    $url = 'https://www.google.com/m8/feeds/contacts/default/full?max-results='.$max_results.'&alt=json&v=3.0&oauth_token='.$accesstoken; 
    $xmlresponse = curl($url); 
    $contacts = json_decode($xmlresponse,true); 

    $return = array(); 
    if (!empty($contacts['feed']['entry'])) { 
     foreach($contacts['feed']['entry'] as $contact) { 
      //retrieve Name and email address 
      $return[] = array (
       'name'=> $contact['title']['$t'], 
       'email' => $contact['gd$email'][0]['address'], 
      ); 
     }    
    } 

    $google_contacts = $return; 

    unset($_SESSION['google_code']); 

} 

if (!empty($contacts['feed']['entry'])) { 
foreach($contacts['feed']['entry'] as $contact) { 
      //retrieve Name and email address 
$return[] = array (
'name'=> $contact['title']['$t'], 
'email' => $contact['gd$email'][0]['address'], 
); 

      //retrieve user photo 
if (isset($contact['link'][0]['href'])) { 

$url = $contact['link'][0]['href']; 

$url = $url . '&access_token=' . urlencode($accesstoken); 

$curl = curl_init($url); 

     curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
     curl_setopt($curl, CURLOPT_TIMEOUT, 15); 
curl_setopt($curl, CURLOPT_VERBOSE, true); 

     $image = curl_exec($curl); 
     curl_close($curl); 

} 

         $return['image'] = $image; 

         echo ''; 

} 
} 


?> 

ответ

0

Вы можете использовать var_dump(), чтобы увидеть, действительно ли массив google_contacts заполнен. Поместите это в main.php:

<?php 
var_dump($google_contacts); 
?> 

Если вы получаете выход в var_dump вы можете использовать HTML-таблицы и простой Еогеасп, смотрите ниже:

<table border='1' class="table table-striped table-condensed"> 
<thead> 
<tr> 
    <th>Naam </th> 
    <th>Email </th> 
</tr> 
</thead> 
<tbody> 
<?php 
foreach ($google_contacts as $contacts){ 
    echo'<tr>'; 
    echo'<td>'. $contacts['name']."</td>"; 
    echo'<td>'. $contacts['email'].'</td>'; 
    echo'</tr>'; 
} 
?> 
</tbody> 

</table> 
1

Последнее, что делает код устанавливается «$ google_contacts = $ возвращение», так что до вашего приложения, чтобы сделать что-то полезное с google_contacts массива $, например, отобразить его. В blog where this code originated не упоминается, что в образце кода отображается что-либо, только то, что это пример того, как извлекать контакты.

Смежные вопросы