关于facebook SDK的问题

时间:2011-04-19 22:14:53

标签: c# asp.net-mvc asp.net-mvc-3 facebook-c#-sdk

我正在使用facebook SDK,我想知道我应该使用哪个版本?

看起来有一些重大变化发生在4.2到5之间(目前仍处于测试阶段)。我应该继续使用测试版吗?什么时候有任何想法会出现测试版?

我的第二个问题是如何将其用于身份验证。

现在我正在使用DotNetOpenAuth为我的网站进行所有openId身份验证。我在那里使用那种用于facebook身份验证的插件(oAuth)但是我打算在我的网站上使用更多的facebook功能,所以我觉得使用这个插件然后在库似乎能够做到的时候使用sdk libary是没有意义的这一切。

如何使用sdk库进行身份验证。我想在我的登录页面上有一个按钮,他们点击它然后进入Facebook,他们会通过身份验证,然后我会收到一些请求说他们经过身份验证,然后我给他们一个cookie并让他们进去。

我看到的所有教程都认为你只使用facebook作为唯一的身份验证方法,但当然对我来说我有openId,facebook和twitter。

http://facebooksdk.codeplex.com/wikipage?title=Getting%20Started%20with%20an%20ASP.NET%20MVC%203%20Website&referringTitle=Getting%20Started

2 个答案:

答案 0 :(得分:2)

我使用Facebook SDK,我的建议是使用beta

原因是Facebook正在改变和贬低许多旧的REST接口,并使Graph API成为访问数据的唯一方式。因此,为了将来的证明,最新和最好的是要走的路。

现在,它是一个测试版,所以一切都不是100%。如果您需要稳定并且不介意进行更改,请使用稳定版本,然后再升级。

对于身份验证,the process to authenticate is pretty simple

你需要你的authURL:

string authURL = @"https://graph.facebook.com/oauth/authorize?client_id=" + Settings.appId + "&redirect_uri=" + redirectUrl + permissions

其中appId是您的Facebook应用程序ID(当您使用Facebook注册应用程序时获得它),redirectUrl是您希望Facebook向您发送质询令牌的URL,以及您的{ {3}}是您要使用Facebook身份验证令牌访问的内容列表

您可以制作弹出窗口或浏览该URL的任何内容。用户将登录到Facebook(如果他们还没有),然后他们将被呈现应用程序授权屏幕(如果他们尚未授权应用程序)。一旦他们授权(或者如果他们已经授权,则进行模仿),页面将被转发到您提供的redirectUrl。在URL中,将有一个名为code的GET变量,它将包含挑战字符串。您接受该挑战代码并将其作为查询变量添加到另一个以下形式的URL:

https://graph.facebook.com/oauth/access_token?client_id=YOURID&redirect_uri=http://www.facebook.com/connect/login_success.html&client_secret=YOURSECRET&code=THATCODE

该URL将返回身份验证密钥...

唷!这是一个非常重要的过程....如果手动完成:)现在你已经了解了更多关于正在发生的事情,你可以欣赏SDK为你做的事情。

使用SDK进行身份验证permissions

好吧?

答案 1 :(得分:0)

关于4.2 vs 5.0 BETA我想您需要决定是否要使用BETA版本或稳定版本。我相信他们的BETA版本中有更改日志,您可以查看自旧版本以来的更改。

关于使用Facebook进行身份验证。我有一个项目,我支持标准的表单身份验证和帐户创建以及Facebook登录。在我的AccountController中,我有一个用于Forms登录的操作和一个用于Facebook登录的操作。

要配置Facebook程序集,您可以按照发布的教程进行操作,然后可以在页面上放置一个Facebook按钮和类似的代码来开始身份验证过程:

<script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script>
<script type="text/javascript">
    $(function () {
        FB.init({ appId: '<%= FacebookSettings.Current.AppId %>', status: true, cookie: true, xfbml: true });

        $('#fbLoginButton').click(function () {
            FB.login(function (response) {
                if (response.session) {
                    // Success - execute our facebook login action.
                    window.location = "<%= Url.Action("FacebookLogin", "Account") %>";
                } else {
                    // user cancelled login or failed
                }
            }, { perms: 'email' });

            return false;
        });
    });

facebook aciton的工作原理是:

  1. Facebook身份验证是否成功?
  2. 我们是否有用户将Facebook Id作为系统中的用户名?
  3. 如果没有创建用户,请从Facebook数据填写姓名,电子邮件等
  4. 设置Forms身份验证Cookie
  5. 伪代码:

    FacebookApp facebook = new FacebookApp ();
    if (facebook.IsAuthenticated) {
            string userName = facebook.UserId.ToString();
    
            if (UsersRepository.ByUserName(userName ) == null) {
                // Create a User using the Facebook name, email, etc data
            }            
            FormsAuthentication.SetAuthCookie (userName , true);
    }
    

    所以我的想法是将身份验证委托给那些第三方服务,然后在我的系统上创建一个用户可以从中获取的信息。同样在我的项目中,因为我希望用户在创建帐户后设置/非常一些首选项,我将它们重定向到他们可以执行该操作的页面。

    P.S:关于在Visual Studio中本地运行Web项目的提示。您可以创建一个私人Facebook应用程序,其中“站点URL”设置为例如“http:// localhost:4911 /”并使用该appId。这将允许您在本地玩Facebook。