1

これは、FacebookアプリとOpenGraphで遊んでいる私の最初の試みです。私はdevelopers.facebook.comの例に従いました。ここまでは順調ですね。

私がやろうとしていることは次のとおりです。 特定の画像をクリックするときは、ユーザーがログに記録され、アプリが認証されていることを確認してください。ユーザーが認証を受けずにページを使用できるようにしたい。ユーザーが認証する必要がある特定のアクション(その画像をクリックする)は1つだけです。

  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>

これは究極のコードではないことを私は知っています。特に、同時にトリガーされる2つの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