4

尝试客户端站点授权,并尝试在画布内运行。如果我直接访问我的网站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 为真,我就知道我们已登录并准备继续。但它永远不会直接从画布页面到达那里。

我处于沙盒模式,目前通过 http 而不是 https 运行,因为我没有

有任何想法吗?

4

1 回答 1

1

我一直面临着同样的铅,这就是我修复它的方式:

即使 getLoginStatus() 在您的 http 网站中工作,getLoginStatus() 也不会在 fb 画布中触发,除非您提供有效的安全画布 URL ( https://yoursite.com/ )!这意味着您需要在 https 服务器(端口 443)上运行您的应用程序
如果您不想购买证书,您可以创建并自签名证书(请参见此处: http: //greengeckodesign.com/blog/2013/ 06/15/creating-an-ssl-certificate-for-node-dot-js/

我希望这个能帮上忙

于 2014-05-30T17:28:33.190 回答