Facebook Connect : Javascript Library

「django-socialregistration: Facebook Connect 編」で最後までうまくいっていないっぽい件。

 

GETパラメータ解析

imported django settings
>>> import cgi

>>> p='''session=%7B%22session_key%22%3A%223.6xyUzjhq_eNXS4_jpzo0aw__.3600.1266217200-680792252%22%2C%22uid%22%3A%22680792252%22%2C%22expires%22%3A1266217200%2C%22secret%22%3A%225yHSxgLBXP_uPOXDzK40CQ__%22%2C
%22sig%22%3A%22abc0ad2e9338f3d6d6151a332c294d1a%22%7D&next=http%3A%2F%2Fsocio.deb%3A8000%2Fsocial%2Fxd_receiver.htm%3Ffb_login%26fname%3D_opener%26guid%3D0.25116265836604'''

session変数

>>> cgi.parse_qs(p)['session'][0]
'{"session_key":"3.6xyUzjhq_eNXS4_jpzo0aw__.3600.1266217200-680792252","uid":"680792252","expires":1266217200,"secret":"5yHSxgLBXP_uPOXDzK40CQ__","sig":"abc0ad2e9338f3d6d6151a332c294d1a"}'

next変数

>>> cgi.parse_qs(ast)['next'][0]
'http://socio.deb:8000/social/xd_receiver.htm?fb_login&fname=_opener&guid=0.25116265836604'

Cross Domain Communication Channel

Facebook Javascript Client Library では Channel Fileというものが必要

もう一回アクセスしたらProfileができてログインセッションを紐づいた。

とりあえずなにもしないで、もう一回/social/facebook/connect/ をたたいたら、できた。aaaaさんに紐づいた。。。

WS000066

わからない。

ログインページのHTMLソース。

<h1>Facebook.html</h1> 
 
<hr/> 
<p>This is the default template which is shown when a user logs in via Facebook.</p> 
<hr/> 
 
 
 
<form class="connect-button" name="login" method="post" action="/social/facebook/connect/"> 
 
<input type="image" onclick="facebookConnect(this.form);return false;" src="http://static.ak.fbcdn.net/images/fbconnect/login-buttons/connect_light_large_long.gif" /> 
</form> 
 
<script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php/en_US" type="text/javascript"></script> 
<script type="text/javascript"> 
    FB_RequireFeatures(["XFBML"],
        function() {
            FB.Facebook.init("ここにAPIキーが入ります。", "/social/xd_receiver.htm")
        }
    );
    function facebookConnect(form){
        FB.Connect.requireSession();
        FB.Facebook.get_sessionState().waitUntilReady(
            function(){
                form.submit();
            }
        );
    }
</script> 

これはdjango_socialregistrationの templates/socialregistration/facebook_js.html でテンプレートファイルが定義されていて、

<script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php/en_US" type="text/javascript"></script>
<script type="text/javascript">
    FB_RequireFeatures(["XFBML"],
        function() {
            FB.Facebook.init("{{ facebook_api_key }}", "{% url facebook_xd_receiver %}")
        }
    );
    function facebookConnect(form){
        FB.Connect.requireSession();
        FB.Facebook.get_sessionState().waitUntilReady(
            function(){
                form.submit();
            }
        );
    }
</script>

テンプレートタグライブラリtemplatetags/facebook_tags.pyでsettings.pyから読み込むようになっています。

from django import template
from django.conf import settings

register = template.Library()

@register.inclusion_tag('socialregistration/facebook_js.html')
def facebook_js():
    return {'facebook_api_key' : settings.FACEBOOK_API_KEY}

認証リクエストの実体は http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php/en_USからダウンロードされます。

カテゴリー: 未分類 パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中