2011-01-25 9 views
3

私はoAuth GoogleをZend Frameworkを使用して実装しました。私が今できることは、ユーザーがのGmail IDとパスワードを使用して認証していることです。その後、自分のGoogle Docsを表示しています。しかし、彼が古いユーザーか新しいユーザーかをユーザーを識別する方法。Zend Frameworkを使用してGmailログイン時にユーザー固有のIDを取得する方法

ユニークなIDとは Googleはウェブサイトでのログイン後に提供しています。

はあなたが

$consumer = new Zend_Oauth_Consumer($oauthOptions); 
if (!isset($_SESSION['REQUEST_TOKEN'])) { 
$_SESSION['REQUEST_TOKEN'] = serialize($consumer->getRequestToken(array('scope' => implode(' ', $SCOPES)))); 
$approvalUrl = $consumer->getRedirectUrl(array('hd' => 'default')); 
echo "<a href=\"$approvalUrl\"><H2>LOGIN WITH GOOGLE</H2></a>"; 
exit(0);} 


if (!isset($_SESSION['ACCESS_TOKEN'])) { 
if (!empty($_GET) && isset($_SESSION['REQUEST_TOKEN'])) { 
    $_SESSION['ACCESS_TOKEN'] = serialize($consumer->getAccessToken($_GET, unserialize($_SESSION['REQUEST_TOKEN'])));} 
}} 
$accessToken = unserialize($_SESSION['ACCESS_TOKEN']);unset($_SESSION['REQUEST_TOKEN']);unset($_SESSION['ACCESS_TOKEN']); 

答えて

2

あなたがデータベースにGoogleからの返されたIDを格納し、認証されたときに(再び)それを検索することができますありがとうございました。このようなIDを取得してください:

$result = Zend_Auth::getInstance()->authenticate($adapter); 
    if ($result->isValid()) { 
     $identity = Zend_Auth::getInstance()->getIdentity(); 
// Do a database query on your users table looking for this $identity. If exists, they're logging back in 
+0

ありがとうございます。これは、アダプターでユーザー名とパスワードを直接指定する方法です。しかし私は消費者キーZend_Oauth_Consumerを使ってこれを実装しています。これでどのように私はユーザーの識別情報を得ることができます。私は私の質問を更新しています。 –

+0

それは私にとって非常にIMPであるので、これで私を助けてください。 –

+0

これはオープンIDで使用されます。完全な例はdocsにありますhttp://framework.zend.com/manual/en/zend.auth.adapter.openid.html – Ashley

関連する問題