Drupal 6.xおよびOpenID

バージョン6のCMS DrupalOpenIDの組み込みサポートを取得しています。 しかし、多くの人はこの決定を2つの理由でscりました。 これまでのところ、最初の問題は解決不可能と認識されていました。このビジネスのための特別なモジュールを作成することは私だけに起こります。

しかし、2番目の問題の解決策は非常に簡単であることが判明しましたが、実際にはどこにも記載されていません。



この奇妙なDrupalの動作の理由は何ですか? 実際、OpenIDを使用してログインしようとすると、エンジンは完全なユーザーアカウントを作成し、OpenIDプロバイダーから提供された情報をデータとして取得します。 しかし、多くのサイトは、まず第一に、純粋な形式でログインを提供するのではなく、ユーザーのページの完全なアドレス(たとえば、「 login 」ではなく「 login.livejournal.com 」)を提供します。 第二に、Drupalでアカウントを作成するために必要なユーザーの電子メールに関する情報を提供しません。



問題の最初の部分は、プロジェクトの公式Webサイトからのパッチによって解決されます(バージョンはディスカッションページに表示されます )。 それだけでなく、無効な文字は自動的に削除されるようになったため、アドレスも分析されてユーザーのログインが判別されます。 コミュニティの人々に感謝します。

2番目の部分も簡単に解決できます。ユーザーの偽のアドレスを生成するだけで、Drupalはすべてが正常であると見なします。 これは、電子メールなどによる確認と競合するため、良い解決策ではありません。 (アドレスは偽です)、しかしそれはユーザーの生活を楽にします-ログインしようとするときの追加のステップはありません。

これを行うには、行の一部をopenid.moduleから変更します。

$ form_state ['values'] ['mail'] =(!empty($ response ['openid.sreg.email']))? $ response ['openid.sreg.email']: ''; (パッチ適用後のバージョン)

または$ form_state ['values'] ['mail'] =(empty($ response ['openid.sreg.email']))? '':$ response ['openid.sreg.email']; (パッチを適用する前のバージョン)

に変更

$ form_state ['values'] ['mail'] =(!empty($ response ['openid.sreg.email']))? $ response ['openid.sreg.email']:$ form_state ['values'] ['name']。 '@ nomail';



サーバーがユーザーの電子メールを送信していない場合、フィールドには「user_username @ nomail」という形式のアドレスが入力されます。



OpenIDログインで有効なDrupalアカウントを作成するという開発者の考えを理解し、尊重していますが、状況はさまざまです。誰かが解決できない場合があります。

Upd:Drupal 5.x の2番目の問題を処理するためアルゴリズムを読んだ場所を見つけました(これに依存していました)。既製のパッチもあります。 SolarWind Gateを強くお勧めします。 オタクノート



All Articles