使用PHP cURL检索Gmail签名 - 无效令牌401

时间:2016-03-06 20:32:12

标签: php curl

我正在尝试使用PHP中的cURL构建GET / POST来检索和更新Gmail签名。 由于服务器的限制,我正在使用较旧的PHP 5.3服务器进行测试和PHP库v.1。 我可以使用这些库从Directory和Gmail api中检索数据,但我需要根据文档进行签名的GET / POST

https://developers.google.com/admin-sdk/email-settings/#api_operations

登录部分由GooglePlus处理。 这是用于刷新令牌的POST。有一些vardumps因为我无法SSH到服务器,或使用xdebug。

function getToken() {
    $curl =  curl_init();
    $url ="https://accounts.google.com/o/oauth2/token";

    $ses = json_decode($_SESSION['token'],true);
    $opt =array(
        "client_id" =>"************************",
        "client_secret" =>"********************",
        "grant_type" =>"refresh_token",
        "refresh_token" =>"$ses[refresh_token]"
        );      
    echo '<pre>';
    echo 'OPT';
    print_r ($opt);
    echo '</pre>';
    curl_setopt($curl, CURLOPT_POST,true);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_URL,$url);
    curl_setopt($curl, CURLOPT_POSTFIELDS,$opt);
    $newtok =curl_exec($curl);
    echo'<pre>';
    echo 'New Token';        
    echo('getToken output'.var_dump($newtok).'<br>');
    echo '</pre>';
    curl_close($curl);
    return $newtok;

}

和GET PART

function httpGet($url) {
    if (isset($_SESSION['access_token'])  && $_SESSION['access_token']) {
     try { 
   $auth_token = $_SESSION['access_token'];
    $auth_token = json_decode($_SESSION['token']);
    echo '<pre>';
    echo 'Old tekon';
    var_dump($auth_token);
    echo '</pre>';
    $ch =curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $toknew =  getToken();
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Authorization: GoogleLogin auth='.($toknew).''));
   $output =  curl_exec($ch);
   curl_close($ch);
    return $output;
     }catch (Exception $e) {
         print_r($e);
     }

   echo('httpGet var dump'.var_dump($output).'<br>');
        }
   }

我正在调用这个函数

echo httpGet("https://apps-apis.google.com/a/feeds/emailsettings/2.0/mydomain.com/my.user/signature");

根据var_dumps,我使用getToken()获得的令牌与我使用google登录获得的令牌不同,但我认为我使用它错了或者我误解了我实际需要的令牌。

EDIT。 更换后

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: GoogleLogin auth='.($toknew).''));

curl_setopt($ch,CURLOPT_HTTPHEADER,array('Authorization: Bearer ya29.XXXXX(acces token)'));

我现在得到像

这样的东西
https://apps-apis.google.com/a/feeds/emailsettings/2.0/my.domain/my.user/signature2016-03-08T15:09:50.799Z

没有想法如何解析结果:|

0 个答案:

没有答案