外部ユーザーシステム(username / email / sessionId)を備えたGoogle Chrome拡張機能があり、ユーザーは自分で選択した資格情報(SSL経由)を使用してログインできます。これを次のようにGoogleOpenIDログインを使用するように変更したいと思います。
- ユーザーが[Google経由でログイン]をクリックします。
- 拡張機能はcheckid_immediate*ログイン要求を実行します:- checkid_immediateログインに失敗した場合 :- checkid_setup拡張機能は、 **ログイン(および電子メールフェッチ)用に指定されたパラメーターで新しいタブを開きます。
- ユーザーがアカウントを選択し、私のサービスを承認します。
- リターンページで、OpenIDIDと電子メールをデータベースに保存します。
- Javascriptでタブを閉じます。
 
- それ以外の場合は成功し、 OpenIDIDcheckid_immediateが返されます。- データベースでOpenIDIDを探すことにより、どのユーザーを特定します。
 
 
- sessionIdユーザーにログインして、通常どおりに設定します。
私が理解している限りx-has-session、現在ログインしているユーザーのOpenIDを取得できます(以前にサービスにログインの使用を許可している場合)が、応答は常にopenid_mode=setup_neededです。
テストに自分のアカウントを使用すると、新しいtabcheckid_setupメソッドを使用して承認し、checkid_immediateXmlHttpRequestから正常な応答を得ることができます。ただし、これは、Googleから取得したOpenIDをopenid.claimed_idandopenid.identityパラメーターに挿入した場合にのみ可能です。 
openid.identityおよびopenid.ui.modeパラメータに関係なく、要求は成功します。
私は自分に何ができるかを完全に誤解しましたx-has-sessionか?
はいの場合、checkid_immediate(新しいタブで開かずに)拡張機能からリクエストを実行する唯一の方法は、リクエストの実行時に取得したOpenID識別子を介して実行することcheckid_setupですか?
*checkid_immediateリクエストパラメータ(XMLHttpRequestを使用してPOSTリクエストとして送信されます):
var endpoint = "https://www.google.com/accounts/o8/ud";
var openIdParameters = {
  "openid.ns": "http://specs.openid.net/auth/2.0",
  "openid.mode": "checkid_immediate",
  "openid.return_to": "http://example.com/googleAuth.php",
  "openid.realm": "http://example.com",
  "openid.claimed_id": "http://specs.openid.net/auth/2.0/identifier_select",
  "openid.identity": "http://specs.openid.net/auth/2.0/identifier_select",
  "openid.ns.ui": "http://specs.openid.net/extensions/ui/1.0",
  "openid.ui.mode": "x-has-session"
};
URLでopenid.return_to私が行うのはjson_encode($_REQUEST)、XmlHttpRequestの応答としてフェッチされるecho(GET / POST変数のみ、Cookieは含まれていません)だけです。
*checkid_setupリクエストパラメータ(新しいタブで開きます):
var endpoint = "https://www.google.com/accounts/o8/ud";
var openIdParameters = {
  "openid.ns": "http://specs.openid.net/auth/2.0",
  "openid.mode": "checkid_setup",
  "openid.return_to": "http://example.com/googleAuth.php",
  "openid.realm": "http://example.com",
  "openid.claimed_id": "http://specs.openid.net/auth/2.0/identifier_select",
  "openid.identity": "http://specs.openid.net/auth/2.0/identifier_select",
  "openid.ns.ax": "http://openid.net/srv/ax/1.0",
  "openid.ax.mode": "fetch_request",
  "openid.ax.required": "email",
  "openid.ax.type.email": "http://axschema.org/contact/email"
};