更新我設法找到一個可行的解決方案:
<div id="fb-root"></div>
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.init({appId: 'MYAPPID', status: true, cookie: true, xfbml: true});
FB.Event.subscribe('auth.login', function(response) {
login();
});
FB.getLoginStatus(function(response) {
if (response.session) {
login();
}
});
};
(function() {
var e = document.createElement('script');
e.type = 'text/javascript';
e.src = document.location.protocol +
'//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());
function login() {
var fb_loginbutton = document.getElementById('fb_loginbutton');
$('.fb_button_text').html('Continue to your account...');
fb_loginbutton.onclick = function() {
window.location = "https://domain.com/login_controller.aspx";
}
}
</script>
我login_controller.aspx頁面看起來是這樣的:
保護小組的Page_Load(BYVAL發件人爲對象,BYVALË作爲System.EventArgs)把手Me.Load
Dim FacebookAPPID As String = "MY_FB_APP_ID"
If Request.Cookies("fbs_" & FaceBookAppID) Is Nothing Then
'Response.Redirect("error.aspx")
End If
Dim cookie As String = Request.Cookies("fbs_" & FaceBookAppID).Value
cookie = cookie.Replace("""", "")
Dim facebookValues As NameValueCollection = HttpUtility.ParseQueryString(cookie)
'Response.Write(facebookValues("access_token"))
'Response.Write("<br><br>")
'Response.Write(facebookValues("secret"))
'Response.Write("<br><br>")
'Response.Write(facebookValues("session_key"))
'Response.Write("<br><br>")
'Response.Write(facebookValues("sig"))
'Response.Write("<br><br>")
'Response.Write(facebookValues("uid"))
doLogin(facebookValues("uid").ToString)
末次
我有一個q uestion>在我的數據庫中存儲某種AES加密字符串和facebook用戶標識是否有用?我使用的這個過程中,登記要求:
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({appId: 'MY_APP_ID', status: true, cookie: true, xfbml: true});
};
(function() {
var e = document.createElement('script'); e.async = true;
e.src = document.location.protocol +
'//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);
}());
</script>
<fb:registration fields="[{'name':'name', 'view':'prefilled'},{'name':'username', 'view':'not_prefilled', 'description':'Username','type':'text'},{'name':'password', 'view':'not_prefilled', 'description':'Password','type':'text'},{'name':'lastname', 'description':'Last name','type':'text'},{'name':'email'},{'name':'accountnumber', 'description': ' Account number','type':'text'}]" onvalidate="validate_async" redirect-uri="https://domain.com/fbregister.aspx"></fb:registration>
<script>
function validate_async(form, cb) {
tmp = form.accountnumber;
tmp = tmp.split("-");
if (tmp.length != 2) {
cb({'accountnumber': 'Please include the dash in your account number. Example: xxxxx-xxxxxx.'});
}
if (form.username) {
if (form.username.length > 0) {
$.getJSON('checkUsernameExists.aspx?username=' + form.username,
function(response) {
if (response.error) {
cb({username: 'That username is taken'});
}
cb();
});
}
} else {
cb();
}
}
</script>
我fbregister.aspx使用JSON.net庫來解析Facebook的迴應:
昏暗FBAppID作爲字符串,FBSecret作爲字符串,數據作爲JObject FBAppID = 「MY_FB_ID」 FBSecret = 「MY_FB_SECRET」
data = ClientSite.Classes.Facebook.DecodeFacebookRequest(HttpContext.Current.Request.Form("signed_request"), FBSecret)
Response.Write(data)
會的最佳實踐是什麼存儲的用戶ID與密碼嗎?我正在考慮使用AES來加密密碼。用戶標識符會通過,Facebook的祕密將是鹽,而系統生成的機器鍵是文本。
當有人試圖使用Facebook登錄時,它會生成一個加密的密碼,並將其與存儲在數據庫中的密碼進行比較。這基本上會提供額外的安全層。思考?
感謝您的建議。您的建議有些作用,但在我輸入Facebook憑證後需要額外點擊才能「繼續」。此外,我不知何故會想方式來重定向用戶到我的自定義Facebook註冊頁面,如果用戶目前沒有連接到我的應用程序。 –
我想我明白你在問什麼 - 如果用戶已經登錄到Facebook,那麼他們需要點擊按鈕登錄到你的網站,但一旦他們完成了Facebook登錄並返回,他們不應該需要再次點擊它? [這裏有一個非常好的教程可能會有所幫助](http://thinkdiff.net/facebook/new-javascript-sdk-oauth-2-0-based-fbconnect-tutorial/)。另外,您可以將redirect_uri參數傳遞給FB.login調用,該調用可以向您的代碼返回一個GET值,例如「return_from_facebook = true」,這會自動激發按鈕。 – JoLoCo
JoLoCo感謝您的鏈接 –