1

LightOpenID を使用してデータを取得しようとしています。そのまま、以下のコードは機能していますが、行のコメントを外して詳細情報を取得すると、タイムアウトになり、エラーは表示されません。私は何を間違っていますか?

require_once('inc/func/_functions.php');
require ('inc/libs/openid.php');
initSession();
try {
$openid = new LightOpenID('tutordelphia.com');
if(!$openid->mode) {
    $openid->identity = 'https://www.google.com/accounts/o8/id';
    $openid->required = array (
       'contact/email',
//     'namePerson/first',
//     'namePerson/last'
    );
    header('Location: ' . $openid->authUrl());
} elseif($openid->mode == 'cancel') {
 echo 'User has canceled authentication!';
 } else {
$valid=$openid->validate();
if($valid)
{       
    $data=$openid->getAttributes();
    $_SESSION['user']=new userClass();
    $_SESSION['user']->userID=$_GET['openid_identity'];
    $_SESSION['user']->userEmail=$data['contact/email'];

//  $_SESSION['user']->firstName=$data['namePerson/first'];
//  $_SESSION['user']->lastName=$data['namePerson/last'];
//  $_SESSION['user']->userName=$data['namePerson/first'].$data['namePerson/last'];
    $_SESSION['user']->addUserToDB();
    $_SESSION['user']->createUserCookie();
    header('Location: index.php');
    }
}
   } catch(ErrorException $e) {
   echo $e->getMessage();
}
4

1 に答える 1

0

openidはシンプルなhttpインターフェースです。独自のコードを作成することをお勧めします。

同様に、グーグルはオープンIDにわずかに異なるひねりを持っており、標準に準拠していません。標準に準拠している別のプロバイダー(OpenIDなど)に対してこのコードを試すことをお勧めします。そのライブラリはグーグルを正しく処理しないかもしれません。グーグルが自分のライブラリで何を期待しているかを理解するのに苦労しました。

そこから、少なくともライブラリが実際に機能するかどうかを判断できます;)

于 2012-11-16T21:15:51.760 に答える