18

Facebook アプリの設定 ☞ 詳細設定 ☞ 認証で、アプリの種類として「Web」または「ネイティブ/デスクトップ」を選択できます。情報バブルには次のように書かれています。

ネイティブの iOS または Android アプリ、デバイス、またはデスクトップ アプリの場合は、[ネイティブ/デスクトップ] のみを選択してください

実際、私はそれらのどれでもありませんが、私のアプリはネイティブ iOS アプリであり、Facebook ページ タブでもあります。
質問:どのアプリの種類を選択すればよいですか?


いくつかの調査を行ったところ、Facebook Android チュートリアル(トラブルシューティングの下) で次のことがわかりました。

  • アプリの種類 Web とネイティブ/デスクトップ。それは問題ですか?:いいえ、関係ありません。ただし、アプリには「ネイティブ/デスクトップ」タイプを使用することをお勧めします。

関係ないとはどういう意味ですか? それは私には意味がありません。では、なぜ私に選択肢が必要なのですか?

SO についてさらに調査を行ったところ、 @Igy (Facebook の開発サポート エンジニア)による次の声明が見つかりました。

アプリのタイプが「ネイティブ/デスクトップ」に設定されている場合、アプリの秘密鍵をバイナリで配布したと想定されるため、アプリのアクセス トークンは信頼されません (また、PHP SDK の「getAccessToken」は、実際のユーザーがログを記録する場合にのみ機能します)。アプリ トークンにフォールバックすることはできません)。

最後に、Facebookのドキュメントでこれを見つけました:

: ネイティブ/デスクトップ アプリとして構成されたアプリケーションは、アプリケーションを必要とする API 呼び出しを行うことができませんaccess_token

ページ タブ アプリからのアクセス トークンを必要とする API 呼び出しを行う必要があります。そのため、ページ タブと同じアプリ ID を使用するネイティブ iOS アプリを使用しているにもかかわらず、アプリの種類として「Web」を選択するという結論に達しました。アプリ。しかし、それは iOS アプリに何らかの欠点をもたらすでしょうか?

4

1 に答える 1

17

TL;DR: アプリ シークレットを iOS / Android バイナリに入れる場合を除き、「web」を使用してください

主な違い (および推奨事項を示しながら「問題ではない」と記載されている理由) は、「ネイティブ/デスクトップ」モードを選択した場合、アプリケーション シークレットが埋め込まれたアプリ バイナリを配布すると想定されることです。アプリ シークレットは信頼されていないと見なされます。

この構成では、アプリ シークレットを使用する API 呼び出し (テスト ユーザーの作成、アプリ設定の変更、実績の投稿など、アプリ自体に代わって API 呼び出しを行うなど) は機能しません。

アプリでアプリ シークレット/アプリ アクセス トークンを使用する必要がない場合は、ネイティブ/デスクトップに設定すると、アプリに対する攻撃ベクトルが 1 つ少なくなるため、セキュリティがいくらか向上します。

コードでアプリ シークレットを配布する場合は、そのオプションを使用する必要があります。そうしないと、ユーザーがアプリ シークレットを簡単に特定して、アプリ自体をハイジャックする可能性があります。

于 2012-07-23T14:06:57.590 に答える