2011-01-21 8 views
3

私はこれにちょっと新しくて、私に同行してください。 Javascript SDKを使用して「Facebookでログイン」ボタンをインストールしましたが正常に動作します。 私もPHPコード(facebook.php)を設定しました JavaScriptを使用してFacebookに正常にログインできますが、その後はPHP経由でセッションからUIDにアクセスすることはできません。 それで、PHPでセッションのJavaScriptセットにアクセスするにはどうしたらいいですか? おかげFacebookのCookieはどこにありますか?

編集:(読みやすくなりますので、以下のここからの投稿コード)

私は応答をログコンソールとそれを見ることができます。

FB.getLoginStatus(function(response) { 
    console.log(response.session.uid); 
}); 

ページを更新し、phpで設定されたセッションにアクセスしようとすると、nullが返されます。

require_once(RELATIVE_PATH.'applibs/facebook.php'); 
$config = array('appId'=>Config::$fb_app_id, 'secret'=>Config::$fb_secret, 'cookie'=>true); 
$fb = new Facebook($config); 
$fb->getUser(); // this will equal null because the $fb object isnt finding the cookie supposedly set by javascript 

*は358 ... $ COOKIENAME =の$ this - > getSessionCookieName()ライン上facebook.php

にいくつかのデバッグをしました。
// fbs_myNumericAppIdを返します。
if(isset($ _ COOKIE [$ cookieName])){
// FAILS! $ _COOKIE ['fbs_myNumericAppId']

これは、facebook.comにログインすると、自分のアプリIDがどのようになっているのかが分かりますか?
facebook.comにログインした後、$ _COOKIEに関連するFacebookのブックはありません。 したがって、facebook.com経由でFacebookにログインするには、Webサイトにログインするように通知するには、ページ読み込み時にFB.loginを実行する必要があります。 次に、$ _COOKIEに返されたjavacript情報を使ってCookieを設定する必要があります。

答えて

4

私はblog postpreviousanswersを参考点としてご利用いただけます。

Facebookにあなたのサイトを「アプリケーション」として登録しましたか?もしそうでなければ、あなたはそれをする必要があります。あなたのサイトがユーザーの情報にアクセスできるようにFacebookが設定したクッキーは、あなたのアプリケーションのIDと「シークレット」(あなたが共有してはならない長い英数字の文字列、ユーザーのIDとユーザーとアプリケーションに固有の認証トークン(ユーザーが自分のデータに与えたアクセス許可を表す)を使用して暗号化された値を設定することができます。

クッキーは他のクッキーと同様にリクエストと共にサイトに掲載されます。アプリケーションの秘密を使って解読し、ユーザーのIDと認証トークンを抽出し、FacebookのグラフAPI経由でデータにアクセスするのに使用します。

+0

はいアプリを登録しました。私はjavascriptを使ってログインしたときにresponse.sessionが入ってくるのを見ることができますが、PHPではそうではありません – hogsolo

+0

@hogsolo:あなたは何をしようとしているのでしょうか? – David

+0

@hogsolo:これは問題ありません。あなたが投稿したコード(アプリケーションの秘密など)で妥協しているものを難読化してください。 JavaScriptだけでもFacebookとやりとりするにはさまざまな方法がありますので、問題を再現できるコードのベースラインを手助けするほうがずっと簡単です。 – David

関連する問題