2011-01-27 8 views
7

私はAndroid/iPhoneアプリと私のサーバー間の通信を可能にする簡単なAPIを開発しました。私のアプリケーションでは、ユーザーが自分自身を認証する必要があり、彼らは、次のAPI呼び出しでログイン/パスワードの資格情報を使用してそれを実行します。Facebookは個人用APIで認証するために接続します

{ "api_token": "xxxx-xxxx-xxxx-xxxx" } 

だから基本的に私は反対私の資格情報を交換:

http://api.myapp.com/login?user=xxx&pass=pass 

アプリケーションがリターンで受け取りますapi_token

Facebook接続サポートを追加したいと思います。私はFacebook SDKをうまく使い、正しいaccess_tokenを受け取っています。

しかし、私はすでに(彼のウェブユーザパネル上の)Facebookで自分のアカウントに接続している、何が為替に進むための最良の実装となり、ユーザーを想定しapi_token

access_tokenを交換するためのメカニズムを実装する必要があります?

答えて

5

ここで私は最終的にそれをしました。それは1年以上にわたって非常にうまく動作しており、問題は一度もありません。 、あなたは含めて、すべてのユーザー情報バックJSONをあなたに送信し、簡単な

wget -qO- https://graph.facebook.com/me?access_token=<facebook_access_token> 

access_tokenの妥当性を検証

http://api.myapp.com/login/facebook?access_token=<facebook_access_token> 

サーバー側:アイデアは、次のAPI呼び出しを使用してトークンを交換することですユーザーのFacebook ID。ユーザーが既に自分のアカウントをFacebookに接続していると仮定すると、user_idを検索してapi_tokenを送り返すことができます。約

+0

は、ここで私は心配のシナリオです: アプリケーションAが権限Xを持つユーザーのためのFBアクセストークンを取得 アプリケーションAはhttp://api.myapp.com/login/facebook 'であなたのログインURLを訪問します?access_token = ... ' アプリAが取得したアクセストークンを取得したので、ユーザーは許可を得ていないユーザーと同じアクセス権を持つようになりました。アプリAに許可されているもののみ)。私はこれをいくつかの点で防御的と見なすことができますが、やはりやや間違っているように見え、潜在的にユーザーの信頼を侵害しているようです。 あなたはどう思いますか? –

+2

あなたは正しいですが、私が心配する限り、私たちは「App A」です。 IMHOは、ニュースレターを購読しているユーザーと同じです:私たちは、ユーザーを迷惑メールにしたり、多数の第三者に電子メールを売ったりすることができますが、私たちは責任ある会社(法律上の責任を負う) – EricLarch

関連する問題