1

这是我第一次尝试使用 facebook 应用程序和 OpenGraph。我在developers.facebook.com 上遵循了这个例子。到目前为止,一切都很好。

我想做的是: 单击某个图像时,请检查用户是否已登录并已对您的应用程序进行身份验证。我希望用户能够在不经过身份验证的情况下使用该页面。只有一项特定操作(单击该图像)需要用户进行身份验证。

  1. 如果用户已登录并已对您的应用进行身份验证,则在用户的流上发布一条消息。
  2. 如果用户未登录和/或未对您的应用进行身份验证,则在用户单击图像时显示身份验证对话框。接受后,在用户的信息流上发布消息。

<a onclick="fb_login();" href="#" class="productlink1"><img id="product1" onclick="postCook()" alt="" src="img/fressko_heart_black.png"/></a> <a class="productlink2"><img id="product2" alt="" src="img/fressko_checked_black.png"/></a>

我知道这不是最终的代码,特别是因为它有两个 onclick="" 会同时触发。所以,我需要一个不同的解决方案。

发布在用户提要上的 JavaScript 函数如下所示:

  function postCook()
  {
      FB.api(
        '/me/xxxxxx:cook',
        'post',
        { recipe: 'http://www.zzzzzzz.com/test/' },
        function(response) {
           if (!response || response.error) {
              alert('Error occured');
           } else {
              alert('Cook was successful! Action ID: ' + response.id);
           }
        });
  }

验证用户的 JavaScript 如下所示:

window.fbAsyncInit = function() {
FB.init({
    appId   : 'xxxxxx',
    oauth   : true,
    status  : true, // check login status
    cookie  : true, // enable cookies to allow the server to access the session
    xfbml   : true // parse XFBML
});};



 function fb_login(){
FB.login(function(response) {

    if (response.authResponse) {
        console.log('Welcome!  Fetching your information.... ');
        //console.log(response); // dump complete info
        access_token = response.authResponse.accessToken; //get access token
        user_id = response.authResponse.userID; //get FB UID

        FB.api('/me', function(response) {
            user_email = response.email; //get user email
      // you can store this data into your database             
        });
    } else {
        //user hit cancel button
        console.log('User cancelled login or did not fully authorize.');
    }
}, {
    scope: 'publish_stream'
});
}(function() {
var e = document.createElement('script');
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);}());

有人对我的问题有什么好的解决方案吗?或者朝正确的方向踢。我通常更喜欢使用 PHP,但对于这个任务,JavaScript 似乎是首选的武器。

问候,

4

0 回答 0