2012-03-23 11 views
1

私が働く会社が販売するイントラネットベースのアプリケーションに取り組んでいます。これはバックグラウンドプロセスの一環としてFacebookの壁に投稿できる機能です。認可するredirect_uriイントラネットベースのアプリケーションをブロックする機能

、私は(すなわちhttps://graph.facebook.com/oauth/authorizeパラメータclient_id=1234567890redirect_uri=http://customer-intranet.example.comで)流れを通過する必要があります - そして、私はredirect_uriを予測することはできませんので、それは、私をstymieingだ二つ目だし、Facebookは全体のおよそ厳格であると思われますアプリであらかじめ指定されているもの。

Facebookからのアクセストークンを受け取ったホストされたサイトをセットアップし、そのトークンを何らかの方法で使用可能な顧客のイントラネットサイトにリダイレクトする必要があると考えています。 (そして、オフラインアクセストークンの廃止予定のもの全体があります...)

私は自分自身にとっては大変なことをしていますか?これを行うより良い方法はありますか?私は他の認証フローを見てきましたが、デバイスかもしれませんが、明らかにクローズドベータです。

+0

質問:イントラネットサイトが外部のドメイン名を使用してインターネット上に(限定的に)公開されるように設定する必要がありますか。 facebookからauthコールバックを受け取るpartner.example.com? – GrahamMc

+0

ええ、それは私が今見ているルートです。私の第3段落を見てください。私はそれを避けることができれば、このプロジェクトのために何か、小さなサービスさえもホストしたいとは思っていませんでしたが、そうしなければならないようです。 – zigg

+0

あなたが必要とするものが壁の投稿であれば、ホストされたサイトがあなたのために実際の投稿をするのを避けることができるかもしれません。 – GrahamMc

答えて

4

あなたはOAuth DialogClient Side authentication流れやJS-SDKを使用して、それはJS-SDKによって自動的に提供することができるので、あなたは簡単にredirect_uriを指定して回避することができる(またはクライアント側の認証フローのdocumentatioに示すように、あなたは現在のURL window.locationを使用することができ、そのように考えることができます)。

注:

これはredirect_uri実際の問題の使用を避けるために、あなたを助けるかもしれないが少し深いです... redirect_uri

使い方が原因不能にするだけでなく実装するため、このような流れは、ハードになりますそれを予測することができますが、redirect_uri内にある必要があるため、アプリケーションドメイン、JS-SDKの使用にも同じです。

Application Settings screenshot

ので、一般的に、あなたは多くのクライアント/ドメインの場合は厄介であるアプリケーションの設定でで実行redirect_uri/URLアプリケーションのドメイン名を配置する必要があります。

あなたは独立した(一般にアクセス可能)ホストを使用して認証フローを実装するかもしれませんが、それは質問のカップルその前に自問する良いことだ:そのホストを担当していただきますと、何がすべてで発生します

  1. あなたのクライアントは、認証のためにそのホストで何か問題が起こった場合のみです。
    • これは避ける方が望ましい追加依存関係です。
  2. アプリケーション設定ですべてのクライアントにドメインを提供することはできますか?
    • これは、第三者へのデータ転送のプラットフォームポリシーの違反につながる可能性があり
  3. はあなたがすべてのあなたの顧客のための単一のアプリケーションを使用する必要があります(そうする前に、会社の弁護士に相談してください)?
    • あなたがより良いアプリケーションをアップし、彼らが得た資格情報を使用してアプリケーション/コードを設定するには、クライアントに指示していない場合。
      あなたはすべてのクライアントのために別のアプリケーションを作成したり、セットアップするアプリケーションをあなたのアプリケーションのインストール/セットアッププロセスの一部としてクライアントに指示することができますものをまとめる

。後でクライアント側の認証フローを使用して、すべてのクライアントで動作する汎用コードを作成できます(これはサーバー側のフローでも可能ですが、いくつかの追加作業が必要です)。余分な仕事)。

+0

それは私が得るつもりであると想像しているように、問題の完全な調査についてです。私がすでに知っていたもののいくつかは、まだ有用です。誰かが次の2日間で奇跡の治療法を出さない限り、私はあなたに賞金をあげます。ありがとう! – zigg

関連する問題