我正在使用facebook SDK,我想知道我应该使用哪个版本?
看起来有一些重大变化发生在4.2到5之间(目前仍处于测试阶段)。我应该继续使用测试版吗?什么时候有任何想法会出现测试版?
我的第二个问题是如何将其用于身份验证。
现在我正在使用DotNetOpenAuth为我的网站进行所有openId身份验证。我在那里使用那种用于facebook身份验证的插件(oAuth)但是我打算在我的网站上使用更多的facebook功能,所以我觉得使用这个插件然后在库似乎能够做到的时候使用sdk libary是没有意义的这一切。
如何使用sdk库进行身份验证。我想在我的登录页面上有一个按钮,他们点击它然后进入Facebook,他们会通过身份验证,然后我会收到一些请求说他们经过身份验证,然后我给他们一个cookie并让他们进去。
我看到的所有教程都认为你只使用facebook作为唯一的身份验证方法,但当然对我来说我有openId,facebook和twitter。
答案 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的工作原理是:
伪代码:
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。