Аутентификация с помощью Google OAuth - PullRequest
3 голосов
/ 04 августа 2011

В настоящее время я работаю над системой аутентификации OAuth для моего сайта, которая позволяет входить пользователям через Google API.

Я работаю с Codeigniter 2.0.2, и у меня нет PECL OAuth, скомпилированного на моем сервере,так что мне нужно использовать raw php для этого.

Я прошел проверку подлинности пользователя с помощью Google и получил oauth_token и oauth_token_secret для этогоuser.

Но после бесконечного чтения протокола я все еще не могу найти, как это oauth_key и oauth_token_secret , чтобы получить доступ к другому API для сбора следующей информации:

  • Адрес электронной почты
  • Изображение профиля
  • Полное имя
  • Местоположение

Вот текущий код, который я используюдля аутентификации:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class OAuth extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();

        $this->load->library('google_oauth',array(
            'key'       => '*REMOVED*',
            'secret'    => '*REMOVED*',
            'algorithm' => 'HMAC-SHA1'
        ));
    }

    public function login()
    {
        //Get Request Token
        $response = $this->google_oauth->get_request_token(
            site_url("/oauth/collect"),
            'http://www.google.com/m8/feeds/'
        );

        //Store temp
        $this->session->set_flashdata('g.token.secret', $response['token_secret']);

        //Redirect
        redirect($response['redirect']);
    }

    public function collect()
    {
        $token_s = $this->session->flashdata('g.token.secret');
        if(!$token_s)
        {
            $this->session->set_flashdata('error','Invalid auth session data, please rety your login');
            redirect();
        }

        $oauth = $this->google_oauth->get_access_token(false, $token_s);

        /*Check the data is valid*/
        if(!isset($oauth['oauth_token']) || !isset($oauth['oauth_token_secret']))
        {
            $this->session->set_flashdata('error','Unable to authecticate securly with Google, please try again');
            redirect();
        }

        $token = $oauth['oauth_token'];
        $secret = $oauth['oauth_token_secret'];

        //Will Store Here
    }
}

И я в настоящее время использую слегка измененную версию этого класса аутентификации:

https://github.com/jimdoescode/CodeIgniter-YouTube-API-Library/blob/master/application/libraries/google_oauth.php

1 Ответ

2 голосов
/ 26 августа 2011

Вы пробовали экспериментировать с Google OAuth Playground ?Это полезно для определения того, к каким API-каналам вы можете обращаться, и для создания действительных строк запроса.

Вот список API-интерфейсов Google, к которым вы можете получить доступ: Справочник API Google

Надеюсьпомогает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...