問題タブ [passport-facebook]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - node.js (MEAN スタック) アプリケーションでパスポートを使用してログイン/登録する際の Facebook リダイレクト URL のエラー
Facebook のログイン機能と登録機能をアプリケーションに実装しており、Facebook にアクセスしてユーザーが情報を入力することはできますが、コールバックを機能させることはできません。以下のコードをpassport.jsに入力しました(明らかに情報をx'ingしています):
次のコールバック URL が index.js に含まれています。
アプリケーションを Facebook のログイン ページ onClick に直接表示させることはできますが、ユーザーが電子メール アドレスとパスワードを facebook に入力すると、アプリケーションはリダイレクト時にリロードできず、その人を当社のホームページに移動させることができません。リダイレクトが発生し始めますが、アプリケーションをロードしようとするとエラーが発生します。リダイレクト フィールドの 1 つを間違って使用していませんか? 余談ですが、facebook 開発者アプリケーション ページで有効な OAuth リダイレクト URI として何を設定すればよいでしょうか?
facebook - Facebook ログインがユーザー プロファイルの「未定義」フィールドを返し、電子メールが返されません。MEANJs + Passport-facebook
私は Meanjs.org ボイラープレートを使用していますが、Facebook サインアップでサインアップ ページに戻ります。以下は、これまでに行った手順です。
1) Facebook アプリサイト URLの設定
およびOAuthのコールバックURI
2) APP_ID と APP_Secret を Client_ID と Client_Secret として配置する
3) コードは次のとおりです。
--ルート
-- oauthCallback 関数、
-- Passport-Facebook戦略
};
4) デバッグ
oauthCallback 関数でエラーをログに記録すると、次のように返されます。
1TypeError: 未定義のプロパティ '0' を読み取れません
Passport-Facebook モジュールで Facebook がプロファイルとして返すものは次のとおりです。
{ id: 'Id_of_the_person', username:未定義, displayName: 'Full_name_of_person', name: { familyName:未定義, givenName:未定義, middleName:未定義}, 性別:未定義, profileUrl:未定義, プロバイダー: 'facebook', _raw: ' {"name":"Full_name_of_person","id":"Id_of_the_person"}', _json: { name: 'Id_of_the_person', id: 'Id_of_the_person', accessToken: 'access_token_value', refreshToken: undefined } }
ユーザーの電子メールを含め、Facebook から正しいユーザー プロファイルを取得する方法を教えてくれる人はいますか?
どうもありがとう。
javascript - ユーザーが Facebook で認証された後、ユーザーが認証されたことをどのように示しますか?
このチュートリアルに従って、Node と Passport を使用して Facebook 認証を実装しています。
チュートリアルとドキュメントの両方がこれを行うように言っています:
しかし、ユーザーは自分が認証されているかどうかをどのように知るのでしょうか? ユーザーがログインしているかどうかを示すデータをフロントエンドに送信し、更新に使用できるようにしたいと思います。たとえば、ナビゲーションバーです。
私が理解していることから、Facebook での認証プロセスは次のように機能します。
- リクエストを送信し
GET /auth/facebook
ます。 - ヒットルート。
304 Redirect
URL を添えて Facebook ポータルに送り返します。- コールバック URL を使用して Facebook ポータルにリクエストを送信します。
- ユーザーがポータルで [同意する] をクリックします。
- Facebook
304 Redirect
は、URL がコールバック URL である を返します。 - リクエストはコールバック URL (この場合は ) に送信されます
GET /auth/facebook/callback
。 - の
cb
がpassport.use(obj, cb)
実行されます。 - A
304 Redirect
が返され、URL は成功または失敗に応じて/
orになります。/login
- 要求が
/
またはに送信され/login
ます。
ログインしたユーザーでフロントエンドを更新する方法がわかりません。
$http.get().then()
データを受け取るがないため、これは機能しません。
いくつかのクエリパラメーターを追加してみました:
しかし、それは私にとってはうまくいきません。URLバーには次のように表示されますがhttp://localhost:3000/?foo=bar#_=_
、これは何も記録しません:
私がするとき、それは動作しますsuccessRedirect: '/home?facebook=true'
。しかし、 の中では、それ以外のものsendFile
を送り返すことはできません。試してみると、次のエラーが表示されます。おそらく、ファイルを送り返し、いくつかのヘッダーを設定しているために、別のヘッダーで何かを送り返そうとしています。だから私は何をすべきかわからない。res.send('Authenticated with Facebook')
Error: Can't set headers after they are sent.
sendFile
私がたどり着いたアプローチは、run
ブロックを使用することです:
- これが最善のアプローチかどうかはわかりません。
- HTTPリクエストを期待していないため、テストが台無しになり、常にそうしたくない場合にセッションとCookieが設定されます。
javascript - パスポート用に複数の Facebook 戦略を使用できますか?
以下のpassport-facebook関連の操作を別の方法で処理したいです。
- Facebookでサインアップ
- Facebookでログイン
- 既存のアカウントを Facebook に接続する
「サインアップ」のために、私がしたい/確認したいこと:
- ユーザーが既に存在する場合 (facebook oauth id に基づく)、ログインにリダイレクトします。
- ユーザーが既に存在する場合 (Facebook プロファイルの電子メール アドレスに基づく)、電子メールでサインインするようにユーザーに促し、Facebook アカウントに接続します。
- 新しいユーザーを作成してサインインします。
「ログイン」と「アカウントの接続」については、他の一連のチェック/操作を実行したいと考えています。
私は、facebook のパスポート ドキュメントと、パスポート フェイスブック モジュール、および関連するスタック オーバーフローに関する一連の質問を見てきましたが、これを実装する方法にまだ苦労しています。
異なる callbackURL とオプションを使用して (パスポート経由で) 異なる Facebook 戦略を実装するにはどうすればよいですか?
node.js - TypeError: 未定義のパスポートのプロパティ '0' を読み取れません-facebook
Facebook を使用してログインしようとすると、このエラーが返されます。このリンクのアドバイスに従いましたが、まだ運がありません。Passport-facebook にメールが届かない
これがコードです
{ scope: 'email' }
スコープを からに変更しようとしましたが{ scope: ['email'] }
、まだうまくいきません。
node.js - node.js Express Passport経由でログインした後にセッションを記憶する方法
node.js Express の Passport モジュールを使用して、訪問者が Facebook 経由でログインした後、リダイレクトを正常に取得しました。以下は私のコードの一部です:
私の質問は次のとおりです。セッションをどのように覚えていますか? .nextTick() 関数から値を渡す方法はないようです。また、Cookie を登録することもできません...
angularjs - MEAN: node.js 側で Facebook にログインした後、angular アプリに戻る
私の node.js サーバーは、私の Web アプリケーションがサービスを提供しているホスト/ポートとは異なるホスト/ポートにあり、パスポート + facebook-strategy を使用してログインしたいと考えています。
nodejs からログインできました (サーバー コードが正常に動作していると仮定します) が、ログイン後に Web アプリケーションに戻る最善の方法が見つからないようです。
私の最初のことは、いくつかのng-click関数でコントローラーを介してこのAJAX呼び出しを行うことでしたが、機能しませんでした(そして、ここに理由があります)
そして今、Web アプリケーションを制御することなく、サーバーの応答からリダイレクトを取得しています。
これはサーバー側で起こっていることです:
ここではっきりしていることを願っています。何か案は?