我已經創建了一個與Facebook連接到應用程序的Django應用程序。現在,當我點擊Facebook登錄按鈕時,oauth頁彈出窗口。當我給用戶名n密碼時,它會在沒有實際將頁面重定向到任何頁面的情況下關閉。但是當我把FB頁面放在一個新標籤中時,我可以看到FB登錄該用戶的頁面。所以登錄是完美的,但我不明白到哪裏給頁面重定向後,它得到認證。有人可以幫我解決這個問題嗎?這是我在我的設置頁面中設置的方式?我無法找到選項中設置的任何回調URL。如何在登錄Facebook後重定向網址?
App ID
xxxx
API Key
xxxx
App Secret
xxx
Site URL
http://localhost:8080/redirect_url/
Site Domain
localhost
Canvas Page
http://apps.facebook.com/registrationforms/
Canvas URL
http://apps.facebook.com/registrationforms/
Secure Canvas URL
Canvas FBML/iframe
iframe
用於登錄的代碼: 這段代碼被插入在registrationForm html頁面(登錄):
{% load facebookconnect %}
{% facebook_connect_login_button %}
{% facebook_connect_script %}
和facebookconnect.py代碼是:
from django import template
from django.conf import settings
from django.core.urlresolvers import reverse
register = template.Library()
class FacebookScriptNode(template.Node):
def render(self, context):
return """
<script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php" type="text/javascript"></script>
<script type="text/javascript"> FB.init("%s", "%s");
function facebook_onlogin() {
var uid = FB.Facebook.apiClient.get_session().uid;
var session_key = FB.Facebook.apiClient.get_session().session_key;
var expires = FB.Facebook.apiClient.get_session().expires;
var secret = FB.Facebook.apiClient.get_session().secret;
var sig = FB.Facebook.apiClient.get_session().sig;
fb_connect_ajax(expires, session_key, secret, uid, sig);
}
function fb_connect_ajax(expires, session_key, ss, user, sig) {
var post_string = 'expires=' + expires;
post_string = post_string + '&session_key=' + session_key;
post_string = post_string + '&ss=' + ss;
post_string = post_string + '&user=' + user;
post_string = post_string + '&sig=' + sig;
$.ajax({
type: "POST",
url: "%s",
data: post_string,
success: function(msg) {
window.location = '%s'; //.reload()
}
});
}
</script>
""" % (settings.FACEBOOK_API_KEY, reverse('xd_receiver'), reverse('facebook_connect_ajax'), settings.LOGIN_REDIRECT_URL)
def facebook_connect_script(parser, token): return FacebookScriptNode()
register.tag(facebook_connect_script)
class FacebookLoginNode(template.Node):
def render(self, context):
return "<fb:login-button onlogin='facebook_onlogin();'></fb:login-button>"
#return "<fb:login-button onclick="openPopup('https://graph.facebook.com/oauth/authorize?client_id=a0acfd122e64fc21cfa34d47369f0c97&redirect_uri=http://mysite.com/mypage&display=popup');"></fb:login-button>"
def facebook_connect_login_button(parser, token): return FacebookLoginNode()
register.tag(facebook_connect_login_button)
發佈您的登錄代碼彈出。 – 2011-04-20 13:39:21
我已經發布了我的FB登錄碼。你可以請現在檢查嗎? – 2011-04-21 04:28:26