关于facebook SDK的问题

本文关键字:问题 SDK facebook 关于 | 更新日期: 2023-09-27 17:50:31

我正在考虑使用facebook SDK,我想知道我应该使用什么版本?

看起来从4.2到5(目前仍在测试中)发生了一些重大变化。我应该继续使用测试版吗?有人知道什么时候结束测试吗?

我的第二个问题是如何使用它进行身份验证。

现在我使用DotNetOpenAuth为我的网站做所有我的openId身份验证。我正在使用facebook认证插件(oAuth),但是我计划在我的网站上使用更多的facebook功能,所以我认为使用这个插件和sdk库是毫无意义的,当库似乎能够做到这一切。

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

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

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

关于facebook SDK的问题

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

原因是因为Facebook正在改变和贬低许多旧的REST接口,使Graph API成为访问数据的唯一方式。所以,为了证明未来,最新、最好的产品才是前进的方向。

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

对于身份验证,身份验证的过程非常简单。

你需要你的authURL:

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

其中appId是您的Facebook应用程序ID(当您注册您的应用程序与Facebook), redirectUrl是您希望Facebook向您发送挑战令牌的URL,您的权限是您想要访问您的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进行身份验证,只需遵循此链接

中概述的19个简单步骤

容易啊?

关于4.2 vs 5.0 BETA,我猜你需要决定是否要使用BETA版本或稳定版本。我相信他们在测试版中有一个更新日志,你可以看看从旧版本到现在的变化。

关于使用Facebook的身份验证。我有一个项目,我支持标准的表单身份验证和帐户创建以及Facebook登录。在我的AccountController中,我有一个用于表单登录和一个用于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动作的工作原理:

  1. Facebook认证成功了吗?
  2. 系统中是否有Facebook Id作为用户名的用户?
  3. 如果没有创建用户,则从Facebook数据中填充姓名,电子邮件等
  4. 设置表单认证cookie

伪代码:

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。