Facebook SDKを使用するAndroidアプリを構築していて、ほとんど同じ機能を備えたWebアプリがある場合、Androidアプリはソーシャルアクションをどのように処理する必要がありますか? SDKを介してFacebook APIに直接リクエストを行うのか、それとも自分のAPIを使ってWebアプリケーションサーバーに投稿し、Androidアプリの代わりにFacebookにリクエストすることができるのでしょうか?ほとんどのAndroid用Facebookの例では前者のアプローチを使用していますが、Androidアプリと同じソーシャル機能を持つWebバックエンドがある場合は、明示的にベストプラクティスについて議論するものはありません。サーバー側のコンポーネントを持つAndroidアプリはFacebookに直接アクセスする必要がありますか?
答えて
私は前に同様の問題に気を配ってきました。それはPHPアプリでしたが、本質的にはFBインタラクションをフロントエンド(JS-SDK)またはバックエンドに入れてプロキシ(PHP-SDK)にすることでした。悲しいかなら、多くの指針が見つからなかったので、私は自分の心を作り上げなければなりませんでした。
FBで何をしているのか、アプリ/ webapp /バックエンドが何をしているにしろ、どれくらい深く統合されているのかは、よくあることではないようです。それ以外の場合は、あなたのAndroidはクライアント側のアプリですか?それともWebサービスを介してWebアプリが提供する他の機能に依存していますか?それは何とかバックエンドに発送されるユーザーの行動と一体化されているのか、それともちょうど追加の仕掛けを提供しているのか(例: 'Like'ボタン、行の中の何か)SDKからユーザー関連のデータをFBから、名前)、その情報はバックエンドで役割を果たしますか?
私はそれを見ると、それは次のように要約:FBと
の直接通信は、あなたのアプリとFBの間に追加の層を持っていないので、実装するずっと簡単である、すなわちプロキシコードなどFBがちょうど疎結合していると、それはおそらく「十分に良い」オプションです。
FBをフロントエンドからバックエンドにパッチすることは厄介なことになります。特にFB経由で認証したい場合は、最初はちょっと複雑です。しかし、すべてのFBロジックをAndroid-AppとWebappで共有する単一の場所に配置できるため、バックエンドで提供される可能性のある他のやりとりと統合することは、後で維持しやすくなります。
価値があるという希望は、他の意見も熱望しています。
私は両方のアプローチが正しいと思いますが、選択肢は主にサーバー側に既にあるものに依存します(Android、iOS、Windows Phoneアプリなどの異なるアプリから同じ機能を使用する予定がある場合) 。その場合、フロントエンドで必要な権限を持つユーザートークンを取得し、そのトークンを使用してWebサーバーとfacebookとの通信を許可するのが理にかなっています。このトークンをユーザー用に保存することもできます。そのため、たとえば、Web登録とアプリ登録がある場合に再度アクセス権を与える必要はありません。私たちのアプリでは、基本的に5つのフロントエンド(Android、iOS、デスクトップ、モバイルWeb、フルWeb)があるため、アプリケーション開発者はそこでsdkを使用してトークンを取得するだけです(トークンを使用する必要があります) 、セキュリティのためのFacebookのルールのためのパスワード)。一方、すべてのFacebookコミュニケーションがあなたのアプリの内部でのみ使用され、サーバーがそれについて多く知っている必要はない場合は、アプリでapiの呼び出しを入れます。
私の意見では、独自の集中化を作成して1つのライブラリを使用するのではなく、各プラットフォームごとに利用可能なSDK/APIを使用することをお勧めします。 Androidアプリがソーシャルインタラクションをどのように処理するかについて特に関心があるので、Android用Facebook SDKを使用することをおすすめします。
プラットフォームのリストが増えるにつれて、維持する必要があるコードのサイズが増え、SDK/APIも増えますが、このアプローチの最も重要な要素はユーザーエクスペリエンスです。ネイティブライブラリを利用し、それらのライブラリが進化するにつれてアプリを成長させることで、ユーザーは最も慣れ親しんだ経験をユーザーに提供することになります。彼らはあなたのアプリの使い方を学ぶ必要はなく、使い慣れたコントロールを使って、投稿をしたり、ステータスを更新したり、友人リストを見ることができます。さらに、特定のプラットフォームの機能を利用することもできます(アプリを宣伝する方法でユーザーのフィードにアプリを投稿するなどのモバイルケースの場合)
- 1. IOSアプリケーションのサーバー側アクセスを有効にする必要があります
- 2. Facebook:アプリはホワイトリストにある必要があります
- 3. マークダウンパーサーをクライアント側またはサーバー側にする必要があります
- 4. オニオンフレームワーク:UI /コントローラはリポジトリに直接アクセスする必要があります
- 5. ScalaSignatureを直接使用する必要がありますか?
- 6. IIS仮想サーバーリレーまたはSMTPサーバーに直接接続する必要がありますか?
- 7. クライアントはエンドーサに直接接続する必要がありますか?
- 8. iTunes接続 - 直接アップロードする必要があります
- 9. Androidアプリに特別なアクセスは必要ありません
- 10. 別のLinuxサーバーにクライアント側(React)とサーバー側(Rails-API)をホストする必要がありますか?
- 11. CommunicationExceptionsはWCFのサーバー側で処理する必要がありますか?
- 12. サーバー側が必要なiOS/Androidアプリの標準アーキテクチャ
- 13. intに直接アクセスするか、getterからdoubleを取得してキャストする必要がありますか?
- 14. サーバー側の認証にjwtトークンを格納する必要があります
- 15. ワイルドカードはいつ二重引用符の内側または外側にある必要がありますか?
- 16. 私のAndroidアプリはExchangeサーバにどのように接続する必要がありますか?
- 17. JUnitテストはGWTのURL.encode()サーバー側を呼び出す必要があります
- 18. 2つのデータベースにアクセスする必要があります
- 19. LANのクライアントサーバー(Webサーバー)アプリ - プロキシを処理する必要がありますか?
- 20. フィードリーダー:常にクライアント側にする必要がありますか?
- 21. Androidアプリのリリースキーストアをチームリポジトリにコミットする必要がありますか?
- 22. QT Androidアプリはアンドロイドの起動ログの直後に起動する必要があります
- 23. gitをURLに直接移動する必要はありませんか?
- 24. コアデータにアプリの状態を維持する必要がありますか?
- 25. アプリケーションは3つの層を持つ必要があります
- 26. ドメインモデルオブジェクトでlog4netを直接使用する必要がありますか?
- 27. Facebookアプリ:OAuthExceptionは:アクティブなアクセストークンを使用する必要があります
- 28. ChromeのSPDYをサポートするには、サーバー側で何かする必要がありますか?
- 29. コンポーネントは、いつどこでサーバーからデータを取得する必要がありますか?
- 30. AndroidManifest.xmlに有効なFacebookアプリIDを設定する必要があります
web-appはFacebookのポリシーに違反している:「あなたはFacebookのユーザー名やパスワードを代理、要求、または収集する機能を含めてはいけません。そうであれば、他のすべての考慮事項が議論の対象になります。 – Kai
いいえ、私は十分にはっきりしていないと思います。私は、http://myserver/friends.phpへのリクエストを作成し、ネイティブAndroidライブラリを使用するのではなく出力を使用して、ユーザーのフレンドリストを取得するようなことをプロキシすることを意味します。このプロキシ処理の方法は、Facebookの例に基づいて許可されているようです。 –
パスワードを尋ねたり保存したりすることはできません。プロキシとは、ユーザーのパスワードを取得してFBに送信することを意味します。 FB認証ダイアログを使用して、ユーザーに代わってリクエストを行うことができるトークンを取得する必要があります。後で使用するためにそのトークンを保存することさえできます(ただし、しばらくしてから有効期限が切れます) – joerx