0

ユーザーが投稿してサーバーから情報を取得するプロジェクトを実装しています。シナリオは、ユーザーがアカウント/ログインを手動で (電子メールとパスワードを指定して) 作成することも、SSO を使用して Facebook 資格情報を使用して作成することもできます。私は主に Android の部分を実装していますが、私の質問は一般的なものです。

  1. SSO が呼び出され、ユーザーに資格情報を提供するように求めるボタンがあるとします。アカウントを作成するには、サーバーに何を送信すればよいですか? ユーザーの FB メールを取得し、受け取ったアクセス トークンをパスワードとして設定しますか? そのアクセス トークンは、すべての FB アカウントに対して一意かつ永続的ですか? つまり、同じ FB 資格情報を使用するたびに、同じアクセス トークンを取得しますか?

  2. サーバー側で行う必要がある追加の作業はありますか? または、サーバーは、FB アカウントを使用するユーザーを他のユーザーと同様に処理できますか?

すべての説明は本当に役に立ちます。前もって感謝します!

4

2 に答える 2

0

トークンには有効期限のタイムスタンプがあります。簡単な方法は、fb が送信するデータを使用してユーザー アカウントを生成し、fb トークンと有効期限をユーザー属性として保存することだと思います。

于 2012-04-18T17:46:48.873 に答える
0

Facebook Android SDK を使用していますか? その場合、手動ログイン (ユーザーの電子メール/パスワードを使用) と SSO (Android Facebook アプリ経由) は、特にトークン処理に関して非常に似ています。

たとえば、SDK の例 (sdk\examples\simple\src\com\facebook\android) を確認すると、コードが次のように実行されることがわかります (3 つのファイルに分割)。

private static final String TOKEN = "access_token";
private static final String EXPIRES = "expires_in";
private static final String KEY = "facebook-session";
Facebook session = new Facebook(APP_ID);
SharedPreferences savedSession = context.getSharedPreferences(KEY, Context.MODE_PRIVATE);
session.setAccessToken(savedSession.getString(TOKEN, null));
session.setAccessExpires(savedSession.getLong(EXPIRES, 0));
if (session.isSessionValid()) {
    session.authorize(mActivity, mPermissions, new LoginDialogListener());
}

そのため、ログインが成功するたびにセッション トークンを SharedPreferences に保存する必要がありますが (これは例にもあります)、トークンの処理とログイン ( authorize()) は、手動ログインと SSO ログインの両方で同じです ( activityCode パラメータによって異なります)。

于 2012-04-18T18:43:59.990 に答える