問題 LightOpenIDをGoogle Apps Enterpriseアカウントで使用するようにしようとしています。私は「サーバが見つかりません!」となっていました。私がvalidate()を呼んだとき。私は、LightOpenIDの各ステップをテストするための簡単なページを嘲笑しました。もう少し進んでいますが、現在は常に「is_valid:false」になっています。私は(検証を通じて取り組んでこれまでに を完了)し、線で()の行を発見しました何OpenID検証の最後のステップは、常に "is_valid:false"を返す
、私は特定のopenid-は>データ[](「* openid_」を考える)の値がそれを作っていなかったことに気づきました最終的なparams配列( "openid。*"と思う)に入れてください。下の私の例では、明示的にそれらをコード化しています。 openidがないので、私はいつもis_valid:falseになっているのかどうかはわかりません。 何か値があるか、OpenIDがプロバイダに一度だけまたは他の何か他のものを妥当性検査すると言われているからです。
あなたが私に助けてくれる方法これまでに得たことがあれば、私は2つのうちの1つを使うことができました。サンプルコードの間違いを指摘するか、このようなことをテストするために使用したプロセスを私に教えてください。検証/検証手順をテストするたびにログアウト/バックアップする必要がありますか?このような不具合を早めるツールやプロセスはありますか?
例コード私はドメインをexample.comに置き換えました。出力が必要な場合はお知らせください。 おかげで、エリックB.
try {
$openid = new LightOpenID;
if(!$openid->mode) {
if(isset($_GET['login'])) {
//$openid->identity = 'https://www.google.com/accounts/o8/id';
$openid->identity = 'https://www.google.com/accounts/o8/site-xrds?hd=example.com';
header('Location: ' . $openid->authUrl());
}
?>
<form action="?login" method="post">
<button>Login with Google</button>
</form>
<?php
} elseif($openid->mode == 'cancel') {
echo 'User has canceled authentication!';
} else {
$tClaimedID = 'https://www.google.com/a/example.com/o8/ud?be=o8';
$openid->data['openid_claimed_id'] = $tClaimedID;
foreach (explode(',',$openid->data['openid_signed']) as $item) {
$value = $openid->data['openid_'.str_replace('.','_',$item)];
$params['openid.'.$item] = get_magic_quotes_gpc()?stripslashes($value):$value;
}
$params['openid.mode'] = 'check_authentication';
$params['openid.ns'] = $openid->data['openid_ns'];
$params['openid.signed'] = $openid->data['openid_signed'];
$params['openid.sig'] = $openid->data['openid_sig'];
$tBody2 = $openid->request($tClaimedID,'POST',$params);
echo "\n\n tBody2: ".$tBody2." \n\n";
}
} catch(ErrorException $e) {
echo $e->getMessage();
}
おかげで、Mewp!ソースからまっすぐ。残念ながら、私はイントラネットで作業しています。 .comと直接アクセスできない .com openid.identityをイントラネットに登録することは可能ですか? .com?id = 123とイントラネット上のopenidファイルをホストします。 .com?それはまだ働いていないと私はGoogle OpenIDの署名フィールドが .comに縛られていることを心配しています。ありがとう。 –
Googleは、フォームを 'https:// {$ site_xrds}/openid?[...]'形式で返します。残念ながら、このURLにXRDSドキュメントがない場合、GoogleにそのIDを返す権利があることを確認することはできません。したがって、サイトxrdsをイントラネットに変更してください。 .com、または .comの制御権を持っている人を説得し、X-XRDS-Locationヘッダーを '/ openid'に置く。 –
Mewp