在前端,我已初始化FB并使用以下方式登录:
window.fbAsyncInit = function () {
FB.init({
appId: @facebookAppId, // App ID
status: true, // check login status
cookie: true, // enable cookies to allow the server to access the session
xfbml: true, // parse XFBML
oauth: true
});
// Additional initialization code here
FB.Event.subscribe('auth.login', function () {
window.location = "/facebookPostAuth.aspx";
});
FB.Event.subscribe('auth.logout', function (response) {
window.location = '/logout';
});
// Hack to fix http://bugs.developers.facebook.net/show_bug.cgi?id=20168 for IE7/8/9
FB.UIServer.setLoadedNode = function (a, b) { FB.UIServer._loadedNodes[a.id] = b; };
};
// Load the SDK Asynchronously
(function (d) {
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) { return; }
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
d.getElementsByTagName('head')[0].appendChild(js);
} (document));
在后端,如何使用Facebook C#SDK检查是否存在登录会话?
这和我一样多,但我不知道如何传递APP ID / Secret以获取更多信息(例如我在登录范围中包含的电子邮件):
var client = new FacebookClient();
dynamic me = client.Get("me");
string firstName = me.first_name;
string lastName = me.last_name;
string email = me.email;
答案 0 :(得分:0)
var client = new FacebookClient(appID, appSecret);
或
var client = new FacebookClient(accessToken);
您可以使用javascript SDK获取访问令牌客户端,并将其以隐藏的表单字段(传统或ajax)传递给服务器,或者C#SDK公开它在cookie和/或签名请求中找到的内容通过FacebookWebContext.Current.AccessToken。在过去,我发现了一些时间问题,Facebook没有及时使用新的访问令牌/签名请求更新cookie,这就是我在Javascript中获取并将其发布到服务器的原因。