zoukankan      html  css  js  c++  java
  • php curl 获取 邮箱通讯录 gmail

    2012-3-24 经测试可正常使用

    <?php
    
    error_reporting(E_ALL);
    
    $username = "gmail@gmail.com";
    $password = "password";
    
    $gmail = new mail_gmail();
    $result = $gmail->getAddressList($username, $password);
    
    $data = json_decode($result, true);
    $list = array();
    foreach ($data['feed']['entry'] as $entry) {
        $list['username'] = $entry['title']['$t'];
        $list['email']= $entry['gd$email'][0]['address'];
        $lists[] = $list;
    }
    
    var_dump($lists);
    
    
    class mail_gmail {
        function getAddressList($username, $password) {
            $login_url = "https://www.google.com/accounts/ClientLogin";
            $fields = array(
                'Email' => $username,
                'Passwd' => $password,
                'service' => 'cp', // <== contact list service code
                'source' => 'test-google-contact-grabber',
                'accountType' => 'GOOGLE',
            );
    
            $curl = curl_init();
            curl_setopt($curl, CURLOPT_URL, $login_url);
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $fields);
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
            $result = curl_exec($curl);
    
            $returns = array();
            foreach (explode("\n", $result) as $line) {
                $line = trim($line);
                if (!$line)
                    continue;
                list($k, $v) = explode("=", $line, 2);
                $returns[$k] = $v;
            }
            curl_close($curl);
    
    // step 2: grab the contact list
            $feed_url = "http://www.google.com/m8/feeds/contacts/$username/full?alt=json&max-results=250";
            $header = array(
                'Authorization: GoogleLogin auth=' . $returns['Auth'],
            );
    
            $curl = curl_init();
            curl_setopt($curl, CURLOPT_URL, $feed_url);
            curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    
            $result = curl_exec($curl);
            curl_close($curl);
            return $result;
        }
    
    }
    
    ?>
    
  • 相关阅读:
    [LeetCode] 965. Univalued Binary Tree
    [LeetCode] 811. Subdomain Visit Count
    [LeetCode] 509. Fibonacci Number
    [LeetCode] 1200. Minimum Absolute Difference
    [LeetCode] 590. N-ary Tree Postorder Traversal
    input单选框美化——自定义样式
    input单选框——获取选中值和设置选中值
    [LeetCode] 933. Number of Recent Calls
    mysql 一次性插入的数据量过大报错max_allowed_packet解决方法
    springboot+mybatis+达梦数据库
  • 原文地址:https://www.cnblogs.com/ybbqg/p/2415714.html
Copyright © 2011-2022 走看看