我的要求是,一旦用户使用他的Facebook帐户登录我的网站,从下次开始他/她应该自动登录我的网站,除非他/她已经退出。
目前,我可以允许用户使用Facebook帐户登录,但问题在于自动登录。
我的代码如下:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Facebook login</title>
<script src="http://code.jquery.com/jquery-latest.js" type="text/javascript">
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<table align="center">
<tbody>
<tr>
<td align="center" style="color: #33ccff; font-size: large; font- weight: bold; text-transform: capitalize;"></td>
</tr>
<tr>
<td align="center" style="margin-top: 350px;">
<script type="text/javascript">
// Load the SDK Asynchronously
(function (d) {
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) { return; }
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
}(document));
// Init the SDK upon load
window.fbAsyncInit = function () {
FB.init({
appId: 'xxxxxxxx', // App ID
channelUrl: '//' + window.location.hostname + '/channel', // Path to your Channel File
status: true, // check login status
cookie: true, // enable cookies to allow the server to access the session
xfbml: true // parse XFBML
});
// listen for and handle auth.statusChange events
FB.Event.subscribe('auth.statusChange', function (response) {
if (response.authResponse) {
// user has auth'd your app and is logged into Facebook
FB.api('/me', function (me) {
if (me.name) {
document.getElementById('auth-displayname').innerHTML = me.name;
document.getElementById('UserEmail').innerHTML = me.email;
document.getElementById('UserGender').innerHTML = me.gender;
document.getElementById('AccessToken').innerHTML = response.authResponse.accessToken;
getPhoto();
}
})
document.getElementById('auth-loggedout').style.display = 'none';
document.getElementById('auth-loggedin').style.display = 'block';
} else {
// user has not auth'd your app, or is not logged into Facebook
document.getElementById('auth-loggedout').style.display = 'block';
document.getElementById('auth-loggedin').style.display = 'none';
}
});
$("#auth-logoutlink").click(function () { FB.logout(function () { window.location.reload(); }); });
function getPhoto() {
FB.api('/me/picture?type=normal', function (response) {
var str = "<br/> <img src='" + response.data.url + "'/>";
document.getElementById("ProfilePic").innerHTML = str;
});
}
}
</script>
<h1>Facebook Integration with Aspnet Example</h1>
<div id="auth-status">
<div id="auth-loggedout">
<div autologoutlink="true" class="fb-login-button" scope="email,user_checkins">
Login with Facebook
</div>
</div>
<div id="auth-loggedin" style="display: none;">
Hi, <span id="auth-displayname">Welcome to Toqsoft </span>(<a href="#" id="auth-logoutlink">Signout</a>)
<div id="ProfilePic">
</div>
<div>
<b>Email :</b><span id="UserEmail"></span><br />
<b>Gender :</b><span id="UserGender"></span><br />
<b>AccessToken :</b><span id="AccessToken"></span>
</div>
<div id="AccessToken1">
</div>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</form>
答案 0 :(得分:2)
目前您甚至没有登录用户进入Facebook。您可以使用以下按钮以允许用户登录:
<fb:login-button scope="public_profile,email" onlogin="checkLoginState();">
</fb:login-button>
然后在checkLoginState
回调中,请致电FB.getLoginStatus
:
function checkLoginState() {
FB.getLoginStatus(function(response) {
// do stuff
});
}
如果response.status
为connected
,则应该为您提供access_token和app_scoped user_id。
这实际上在这里都有很好的记录:
https://developers.facebook.com/docs/facebook-login/login-flow-for-web/v2.1