1

CodeIgniterフレームワークを使用したGoogleContactAPIへのアクセスに関する投稿/チュートリアルはありますか?
私はそれZendをグーグルで検索しましたが、Codeigniterでライブラリを使用している投稿が1つだけ見つかりました。
ContactAPIのPHP実装をいくつか実行しました。しかし、それらはすべてCurlAPIとの通信に使用しています。
Codeigniterモデルクラスと同じように使用できますか?または、JavaScriptを使用してGmailの連絡先にアクセスすることを検討する必要がありますか?

助けてください。

4

1 に答える 1

3

codeigniter http://getsparks.org/packages/oauth2/versions/HEAD/showに oauth ライブラリを使用しました

spark->oauth->libries->provider->google like でスコープを設定します

public function __construct(array $options = array()) {
    // Now make sure we have the default scope to get user data
    empty($options['scope']) and $options['scope'] = array(
        'https://www.googleapis.com/auth/userinfo.profile',
        'https://www.googleapis.com/auth/userinfo.email',
        'https://www.google.com/m8/feeds',
    );

同じファイルに次のコードを追加します

public function curl_file_get_contents($email, OAuth2_Token_Access $token) {
    $url = "https://www.google.com/m8/feeds/contacts/$email/full?max-results=" . 25 . "&oauth_token=" . $token->access_token;
    $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. 

    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, 0); //To stop cURL from verifying the peer's certificate.
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);

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

    return $contents;
}

次に、コントローラーのGoogleコンタントにこのコードを使用しました

public function google() {
        $this->load->helper('url_helper');
        $this->load->spark('oauth2');
        $provider = $this->oauth2->provider('google', array(
            'id' => GOOGLE_APP_ID,
            'secret' => GOOGLE_APP_SECRET,
                ));

        if (!$this->input->get('code')) {
            // By sending no options it'll come back here
            $provider->authorize();
        } else {
            // Howzit?
            try {
                $token = $provider->access($_GET['code']);

                $user = $provider->get_user_info($token);
                $email = $user['email'];

                $xmlresponse = $provider->curl_file_get_contents($email, $token);
                if ((strlen(stristr($xmlresponse, 'Authorization required')) > 0) && (strlen(stristr($xmlresponse, 'Error ')) > 0)) {
                    echo "<h2>OOPS !! Something went wrong. Please try reloading the page.</h2>";
                    exit();
                }
                $xml = new SimpleXMLElement($xmlresponse);
                $xml->registerXPathNamespace('gd', 'http://schemas.google.com/g/2005');
                $result = $xml->xpath('//gd:email');
                $this->data['email_address'] = $result;
print_r($result);exit;
            } catch (OAuth2_Exception $e) {
                show_error('That didnt work: ' . $e);
            }
        }

    }
于 2013-01-25T06:11:55.393 に答える