4

ユーザーがDeviseとOmniauthで認証し、ソーシャルネットワークアカウントをアプリに接続できるようにするアプリケーションに取り組んでいます。Wordpress 統合を追加したかった (彼らの Web サイトには、OAuth 2.0 認証と REST API アクセスをサポートしていると記載されています)。

残念ながら、このプロバイダーには Omniauth 戦略がありませんでした。私は他のいくつかの gem を調べ、自分で作成することにしました - それほど複雑ではないようでした。ソースコードはここにあります

必要な情報をすべて追加し ( Wordpress docsに従って)、アプリ ID とシークレットにサインアップしました。ここで最初の問題に遭遇しました。Wordpress は、リダイレクト URI としてライブのパブリック ドメインを要求しました。最初に開発モードでテストしたかったので、localhost で十分でした。ダミーのアドレスを入力してから、それを localhost に戻しました (驚いたことに、更新時に検証せず、作成時に検証しませんでした)。

認証情報を初期化子 (config/initializers/devise.rb) に追加しました:

config.omniauth :wordpress, "my_app_id", "my_app_secret"

動作しているように見えました-期待どおりの認証ダイアログが表示され、アプリケーションについて言及されていました。しかし、[承認] をクリックしてアプリケーションにリダイレクトされたときに、無効な資格情報というエラーが表示されました。

資格情報を確認しましたが、正しいものでした (タイプミスなし、適切な順序)。アプリのシークレットをリセットしました - うまくいきません。別の 2 つのアプリケーションを作成しましたが、まだ何もありません。

私はすでにアイデアを使い果たしました。このようなエラーの原因は何ですか? redirect_uri のローカルアドレスが原因である可能性はありますか?

4

1 に答える 1

2

見逃しやすいものだと思っていましたが、そうでした。Wordpress のサーバーは JSON 文字列で応答しましたが、応答は 1 つとして解析されませんでした。したがって、Omniauth gem はその中にアクセス トークンを見つけることができず、無効な資格情報エラーを発生させていました。正しいコンテンツ タイプを設定することは魅力のように機能しました。

于 2012-04-20T12:52:05.317 に答える