V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
konakona
V2EX  ›  问与答

FacebookAPI 同步登录返回 500

  •  
  •   konakona · 2014-08-16 15:34:52 +08:00 · 3494 次点击
    这是一个创建于 3563 天前的主题,其中的信息可能已经有所发展或是发生改变。
    10 条回复    2014-08-23 02:57:22 +08:00
    canesten
        1
    canesten  
       2014-08-16 16:05:08 +08:00
    一定是你没有仔细读FB的API DOC
    多年前熟悉
    现在忘光了
    konakona
        2
    konakona  
    OP
       2014-08-16 16:18:02 +08:00
    @canesten 网上有一点有关多年前的FB API DOC 的总结资料,不过已经落后了……现在只能看最新的了,眼睛都花了啊~~~~~~~~~~~~~~~~~~~~~~~
    canesten
        3
    canesten  
       2014-08-16 16:21:13 +08:00
    没那么夸张
    就只是做个登录而已
    用Graph API Explorer多试几次就是了
    zhzhwcn
        4
    zhzhwcn  
       2014-08-16 17:22:45 +08:00   ❤️ 1
    登录https://developers.facebook.com
    点开你创建的APP
    左边点settings 然后在右边把Contact Email填上保存
    再在左边点Status & Review 把右边APP图标边上有个开关改成YES(Do you want to make this app and all its live features available to the general public?)
    然后就不会报500错误了
    我昨天也是碰到这样的问题
    konakona
        5
    konakona  
    OP
       2014-08-16 17:32:36 +08:00
    @zhzhwcn 你好,谢谢帮忙。我按照你的方式进行了,但还是500ing...
    我贴下现在的配置图。

    http://imgur.com/XSNz1zg

    http://imgur.com/hMHe4Gu

    http://imgur.com/PzHl97Z

    http://imgur.com/lwXK26z
    konakona
        6
    konakona  
    OP
       2014-08-16 17:37:43 +08:00
    @zhzhwcn 不造为什么,还是一样。
    zhzhwcn
        7
    zhzhwcn  
       2014-08-16 17:56:58 +08:00
    @konakona 那就不知道了 我用的是官方的SDK 建议你去APP的设置里面改改参数试试看 尤其是那些NO的改成YES
    konakona
        8
    konakona  
    OP
       2014-08-18 19:31:23 +08:00
    @zhzhwcn 一口老血飞了出来……就连官方的javascript SDK都用不了。

    以下代码,可粘贴至文本编辑框,保存为人意名称.html 点击页面中的Login,欧克,500了……TAT


    <!DOCTYPE html>
    <html>
    <head>
    <title>Facebook Login JavaScript Example</title>
    <meta charset="UTF-8">
    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
    </head>
    <body>
    <script>
    // This is called with the results from from FB.getLoginStatus().
    function statusChangeCallback(response) {
    console.log('statusChangeCallback');
    console.log(response);
    // The response object is returned with a status field that lets the
    // app know the current login status of the person.
    // Full docs on the response object can be found in the documentation
    // for FB.getLoginStatus().
    if (response.status === 'connected') {
    // Logged into your app and Facebook.
    testAPI();
    } else if (response.status === 'not_authorized') {
    // The person is logged into Facebook, but not your app.
    document.getElementById('status').innerHTML = 'Please log ' +
    'into this app.';
    } else {
    // The person is not logged into Facebook, so we're not sure if
    // they are logged into this app or not.
    document.getElementById('status').innerHTML = 'Please log ' +
    'into Facebook.';
    }
    }

    // This function is called when someone finishes with the Login
    // Button. See the onlogin handler attached to it in the sample
    // code below.
    function checkLoginState() {
    FB.getLoginStatus(function(response) {
    statusChangeCallback(response);
    });
    }

    window.fbAsyncInit = function() {
    FB.init({
    appId : '1460769690846577',
    cookie : true, // enable cookies to allow the server to access
    // the session
    xfbml : true, // parse social plugins on this page
    version : 'v2.1' // use version 2.1
    });


    // Now that we've initialized the JavaScript SDK, we call
    // FB.getLoginStatus(). This function gets the state of the
    // person visiting this page and can return one of three states to
    // the callback you provide. They can be:
    //
    // 1. Logged into your app ('connected')
    // 2. Logged into Facebook, but not your app ('not_authorized')
    // 3. Not logged into Facebook and can't tell if they are logged into
    // your app or not.
    //
    // These three cases are handled in the callback function.

    FB.getLoginStatus(function(response) {
    statusChangeCallback(response);
    });

    };

    // Load the SDK asynchronously
    (function(d, s, id) {
    var js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) return;
    js = d.createElement(s); js.id = id;
    js.src = "//connect.facebook.net/en_US/sdk.js";
    fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));

    // Here we run a very simple test of the Graph API after login is
    // successful. See statusChangeCallback() for when this call is made.
    function testAPI() {
    console.log('Welcome! Fetching your information.... ');
    FB.api('/me', function(response) {
    console.log('Successful login for: ' + response.name);
    document.getElementById('status').innerHTML =
    'Thanks for logging in, ' + response.name + '!';
    });
    }
    </script>

    <!--
    Below we include the Login Button social plugin. This button uses
    the JavaScript SDK to present a graphical Login button that triggers
    the FB.login() function when clicked.
    -->

    <fb:login-button scope="public_profile,email" onlogin="checkLoginState();">
    </fb:login-button>

    <div id="status">
    </div>

    </body>
    </html>
    zhzhwcn
        9
    zhzhwcn  
       2014-08-22 17:59:55 +08:00
    @konakona 不知道你的域名怎么配置的 所以没法帮你调试
    konakona
        10
    konakona  
    OP
       2014-08-23 02:57:22 +08:00
    @zhzhwcn 已解决……坑爹呢,我不知道他一定要上传域名服务器!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1177 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 18:11 · PVG 02:11 · LAX 11:11 · JFK 14:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.