Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jun 21st, 2012  |  syntax: None  |  size: 4.52 KB  |  hits: 20  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. How to redirect the url after logging into Facebook?
  2. App ID
  3. xxxx
  4. API Key
  5. xxxx
  6. App Secret
  7. xxx
  8. Site URL
  9. http://localhost:8080/redirect_url/
  10. Site Domain
  11. localhost
  12. Canvas Page
  13. http://apps.facebook.com/registrationforms/
  14. Canvas URL
  15. http://apps.facebook.com/registrationforms/
  16. Secure Canvas URL
  17. Canvas FBML/iframe
  18. iframe
  19.        
  20. {% load facebookconnect %}
  21. {% facebook_connect_login_button %}
  22. {% facebook_connect_script %}
  23.        
  24. from django import template
  25. from django.conf import settings
  26. from django.core.urlresolvers import reverse
  27.  
  28. register = template.Library()
  29.  
  30. class FacebookScriptNode(template.Node):
  31.         def render(self, context):
  32.             return """
  33.             <script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php" type="text/javascript"></script>
  34.  
  35.  
  36.             <script type="text/javascript"> FB.init("%s", "%s");
  37.                 function facebook_onlogin() {
  38.                     var uid = FB.Facebook.apiClient.get_session().uid;
  39.                     var session_key = FB.Facebook.apiClient.get_session().session_key;
  40.                     var expires = FB.Facebook.apiClient.get_session().expires;
  41.                     var secret = FB.Facebook.apiClient.get_session().secret;
  42.                     var sig = FB.Facebook.apiClient.get_session().sig;
  43.  
  44.                     fb_connect_ajax(expires, session_key, secret, uid, sig);
  45.  
  46.                 }
  47.  
  48.                 function fb_connect_ajax(expires, session_key, ss, user, sig) {
  49.  
  50.                     var post_string = 'expires=' + expires;
  51.                     post_string = post_string + '&session_key=' + session_key;
  52.                     post_string = post_string + '&ss=' + ss;
  53.                     post_string = post_string + '&user=' + user;
  54.                     post_string = post_string + '&sig=' + sig;
  55.  
  56.                     $.ajax({
  57.                         type: "POST",
  58.                         url: "%s",
  59.                         data: post_string,
  60.                         success: function(msg) {
  61.                             window.location = '%s'; //.reload()
  62.                         }
  63.                     });
  64.                 }
  65.             </script>      
  66.             """ % (settings.FACEBOOK_API_KEY, reverse('xd_receiver'), reverse('facebook_connect_ajax'), settings.LOGIN_REDIRECT_URL)
  67.  
  68.  
  69. def facebook_connect_script(parser, token): return FacebookScriptNode()
  70.  
  71. register.tag(facebook_connect_script)
  72.  
  73. class FacebookLoginNode(template.Node):
  74.     def render(self, context):
  75.         return "<fb:login-button onlogin='facebook_onlogin();'></fb:login-button>"
  76.         #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>"
  77.  
  78.  
  79.  
  80. def facebook_connect_login_button(parser, token): return FacebookLoginNode()
  81.  
  82. register.tag(facebook_connect_login_button)
  83.        
  84. def build_authentication_redirect(self):
  85.             args = {}
  86.             args["client_id"]=self.app_id
  87.             args["redirect_uri"]=self.redirect_uri
  88.             args["scope"]=",".join(self.req_perms)
  89.             redirect_url = "https://www.facebook.com/dialog/oauth?"+urllib.urlencode(args)
  90.             redirect_code = """
  91.                     <script type="text/javascript">
  92.                     top.location.href='%s';
  93.                     </script>
  94.             """ % redirect_url;
  95.             return HttpResponse(redirect_code,mimetype="text/html")
  96.        
  97. def load_signed_request(self, signed_request):
  98.             """Load the user state from a signed_request value"""
  99.             sig, payload = signed_request.split(u'.', 1)
  100.             sig = self.base64_url_decode(sig)
  101.             data = json.loads(self.base64_url_decode(payload))
  102.  
  103.             expected_sig = hmac.new(self.app_secret, msg=payload, digestmod=hashlib.sha256).digest()
  104.  
  105.             # allow the signed_request to function for upto 1 day
  106.             if sig == expected_sig and data[u'issued_at'] > (time.time() - 86400):
  107.                     return data.get(u'user_id'), data.get(u'oauth_token')
  108.             else:
  109.                     return None,None
  110.        
  111. sigreq =request.POST.get('signed_request', None)
  112. user_id,access_token = load_signed_request(sigreq)
  113.        
  114. @staticmethod
  115.     def base64_url_decode(data):
  116.             data = data.encode(u'ascii')
  117.             data += '=' * (4 - (len(data) % 4))
  118.             return base64.urlsafe_b64decode(data)
  119.        
  120. import cgi
  121. import hashlib
  122. import time
  123. import urllib
  124. import base64
  125. import datetime
  126. import hmac
  127.  
  128. from django.conf import settings
  129. from django.http import HttpResponseRedirect,HttpResponse,HttpResponseNotFound