私の fb javascript sdk コードは、想定どおりにインデックス ページに読み込まれます。私のjsスクリプトには、ログイン状態になったら起動したいコールバック関数があります。コールバックは、init コードと一緒にインデックス ページに含めると機能しますが、他のページのスクリプトに移動すると機能しません。なんで?
//INDEX
<div id="fb-root"></div>
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.init({
appId : '278xxxxx040', // App ID
channelUrl : '//http://xxxxx/channel.html', // Channel File
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
//get login status
FB.getLoginStatus(onCheckLoginStatus(response));
//JS
//OnCheckLoginStatus only works if I have it on the index page.
function onCheckLoginStatus (response)
{
if (response.status != "connected")
{
top.location.href = "https://www.facebook.com/dialog/oauth?client_id=" + appId + "&redirect_uri=" + encodeURIComponent (redirectUrl) + "&scope=user_photos,friends_photos";
}
else
{
console.log("connected");
$.ajax({
url : "http://sxxxxx/bn/s_Request.php",
type : 'POST',
data: {signed_request: response.authResponse.signedRequest},
success : function (result) {
console.log("success");
console.log(result);
},
error : function () {
alert("error parsing signed request");
}
});
// Start the application (this is just demo code)!
$(document.body).append ("<p>Authorized!</p>");
}
}