Zend Gmail Oauth: Как получить аутентифицированный профиль пользователя? - PullRequest
0 голосов
/ 31 марта 2012

Я использую Zend Gmail Oauth 1.0 для реализации входа в систему с помощью функции Gmail.После успешной аутентификации, как я могу получить профиль аутентифицированного пользователя, в частности уникальный идентификатор пользователя Gmail?Вот код:

$THREE_LEGGED_SCOPES = array('https://mail.google.com/', 
    'https://www.google.com/m8/feeds');

$options = array(
        'requestScheme' => Zend_Oauth::REQUEST_SCHEME_HEADER,
        'version' => '1.0',
        'consumerKey' => $THREE_LEGGED_CONSUMER_KEY,
        'consumerSecret' => $THREE_LEGGED_CONSUMER_SECRET_HMAC,
        'callbackUrl' => getCurrentUrl(),
        'requestTokenUrl' => 'https://www.google.com/accounts/OAuthGetRequestToken',
        'userAuthorizationUrl' => 'https://www.google.com/accounts/OAuthAuthorizeToken',
        'accessTokenUrl' => 'https://www.google.com/accounts/OAuthGetAccessToken'
    );

    if ($THREE_LEGGED_SIGNATURE_METHOD == 'RSA-SHA1') {
        $options['signatureMethod'] = 'RSA-SHA1';
        $options['consumerSecret'] = new Zend_Crypt_Rsa_Key_Private(
            file_get_contents(realpath($THREE_LEGGED_RSA_PRIVATE_KEY)));
    } else {
        $options['signatureMethod'] = 'HMAC-SHA1';
        $options['consumerSecret'] = $THREE_LEGGED_CONSUMER_SECRET_HMAC;
    }

    $consumer = new Zend_Oauth_Consumer($options);

    /**
     * When using HMAC-SHA1, you need to persist the request token in some way.
     * This is because you'll need the request token's token secret when upgrading
     * to an access token later on. The example below saves the token object 
     * as a session variable.
     */
    if (!isset($_SESSION['ACCESS_TOKEN'])) {
      if (!isset($_SESSION['REQUEST_TOKEN'])) {
        // Get Request Token and redirect to Google
        $_SESSION['REQUEST_TOKEN'] = serialize($consumer->getRequestToken(array('scope' => implode(' ', $THREE_LEGGED_SCOPES))));
        $consumer->redirect();
      } else {
        // Have Request Token already, Get Access Token
        $_SESSION['ACCESS_TOKEN'] = serialize($consumer->getAccessToken($_GET, unserialize($_SESSION['REQUEST_TOKEN'])));
        header('Location: ' . getCurrentUrl(false));
        exit;
      } 
    } else {
      // Retrieve mail using Access Token
      $accessToken = unserialize($_SESSION['ACCESS_TOKEN']); 
   }

1 Ответ

0 голосов
/ 01 апреля 2012

близко, как я могу сказать, вы не можете.Gmail не имеет API только для чтения feed .Однако, если вы хотите, чтобы фид URL области видимости был:

https://mail.google.com/mail/feed/atom/

Существуют некоторые API для работы с учетными записями Gmail в контексте Google Apps .

...