【问题标题】:servicestack and facebook canvas app authenticationservicestack 和 facebook 画布应用程序身份验证
【发布时间】:2013-06-29 17:19:19
【问题描述】:

当用户通过 facebook 访问画布 URL 时,facebook 画布应用程序会获取一个“signed_request”参数。

我如何使用它来验证 servicestack 上的用户,以便我在 servicestack 中获取用户会话。

用户已经注册了该应用程序,并将在 servicestack 用户存储库中拥有记录。

我应该将画布网址设置为 /auth/facebook 吗?附加 ?Continue=/target_url 这会对用户进行身份验证并将他发送到 target_url 吗? 或者我应该处理画布请求,然后使用 AuthService 使用“signed_request”参数对用户进行身份验证?如果是这样的话,我该如何处理呢?

【问题讨论】:

    标签: facebook authentication servicestack facebook-canvas


    【解决方案1】:

    以下是我处理此案的方式:

    我处理了 FB 画布请求,接收到“signed_request”参数。然后通过解码 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();
    }
    

    我不确定这是否是手动获得用户身份验证的最佳方式。但到目前为止,这种技术已经奏效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-23
      • 1970-01-01
      • 1970-01-01
      • 2012-08-10
      • 1970-01-01
      • 2011-02-21
      • 1970-01-01
      相关资源
      最近更新 更多