1

ユーザーがFacebook経由でキャンバスURLにアクセスすると、Facebookキャンバスアプリは「signed_request」パラメータを取得します。

これを使用してサービススタックでユーザーを認証し、サービススタックでユーザーセッションを取得するにはどうすればよいですか。

ユーザーはすでにアプリにサインアップしており、servicestack ユーザー リポジトリにレコードがあります。

キャンバスの URL を /auth/facebook に設定する必要がありますか? 追加で ?Continue=/target_url これはユーザーを認証し、target_url に送信しますか? または、キャンバス リクエストを処理してから、「signed_request」パラメータを使用して AuthService を使用してユーザーを認証する必要がありますか? これが事実である場合、どうすればそれを進めることができますか?

4

1 に答える 1

1

これが私がケースを管理した方法です:

「signed_request」パラメーターを受け取り、FB キャンバス リクエストを処理しました。次に、BASE64 でエンコードされた文字列をデコード (および HMAC SHA256 で検証) して、FB の userId を取得しました。

if (isMatch)
{
   string message = UTF8Encoding.UTF8.GetString(msg);
   var output = message.FromJson<Dictionary<string, string>>();
   string user = output["user_id"];
   OAuthTokens tokens = new OAuthTokens();
   tokens.Provider = "facebook";
   tokens.UserId = user;
   UserSession.IsAuthenticated = true;
   ((FacebookAuthProvider)AuthService.GetAuthProvider("facebook")).OnAuthenticated(this, UserSession, tokens, new Dictionary<string, string>());
   return UserSession.ToJson();
}

これがユーザーを手動で認証する最良の方法であるかどうかはわかりません。しかし、これまでのところ、この手法は機能しています。

于 2013-07-03T16:36:46.813 に答える