4

クライアントサイトの承認を試み、キャンバス内で実行しようとしています。自分のWebサイトに直接アクセスするとhttp://mysite.com/すべてが機能します。キャンバスhttps://apps.facebook.com/myappを介して実行しようとすると、実行されますが、getLoginStatusがまったく起動しません。

var curLoc = window.location;


 FB.init({
   appId: 'xxxxxxxxxxxxxxx', // App ID
   channelUrl: curLoc.protocol + "//" + curLoc.hostname + ":" + curLoc.port + "/channel.html",
   cookie: true, // enable cookies to allow the server to access the session
   status: true,
   oauth: true,
   xfbml: true
 });

 FB.getLoginStatus(function (response) {
   if (response.status === 'connected') {
     smloader.gameVariables.smUserid = response.authResponse.userID;
     facebook.isLoaded = true;
   } else {
     facebook.authUser();
   }

 }, true);

必要に応じてログインします。

function facebook.authUser() {
 FB.login(function (response) {
   if (response.authResponse) {
     smloader.gameVariables.smUserid = response.authResponse.userID;
     facebook.isLoaded = true;
   }
   else {
     facebook.authUser();
   }
 }, { scope: 'email,publish_actions' });

}

Facebook.isLoadedがtrueになったら、ログインして続行する準備ができていることがわかります。ただし、キャンバスページから直接そこに到達することはありません。

私はサンドボックスモードで、現在httpsではなくhttp経由で実行しています。

何か案は?

4

1 に答える 1

1

私は同じpbに直面しており、これが私がそれを修正した方法です:

getLoginStatus() が http Web サイト内で機能する場合でも、有効な Secure Canvas URL ( https://yoursite.com/ )を提供しない限り、fb キャンバス内では getLoginStatus() はまったく起動しません。これは、アプリを https サーバー (ポート 443) で実行する必要があることを意味します。
証明書を購入したくない場合は、証明書を作成して自己署名することができます (こちらを参照してください: http://greengeckodesign.com/blog/2013/ 06/15/create-an-ssl-certificate-for-node-dot-js/ )

これが役立つことを願っています

于 2014-05-30T17:28:33.190 に答える