0

Facebook アプリを継承しましたが、100% 意図したとおりに動作しません。前の開発者のロジックは理解できませんが、Facebook API を書き直すほど強くはありません。

アプリにはフォームがあり、ユーザー (ログイン時) はいくつかの質問に答える必要があります。彼が送信をクリックしたときに、彼がそのページを気に入っているかどうかを確認したいと考えています。フォームは、彼が送信した場合にのみ送信されます。

window.fbAsyncInit = function() {
  FB.init({
    appId      : '[myappid]',              
    channelUrl : '//www.myurl.com/channel.aspx',
    status     : true,
    cookie     : true,
    xfbml      : true
   });
 };

$("form input[type='submit']").on("click", function(e) {
  e.preventDefault();
  setTimeout(function() {
    FB.api('/me/likes/MY-PAGE-ID',function(response) {
      if(response.data) {
       alert(response.data); // I get this (empty) alert
       if(!isEmpty(response.data)) {
         alert('all ok'); // I never get this :(
         //$("form").submit();
       } else {
         alert("You must \"Like\" the page."); // Every time
       }
     }
   });
 }, 1000);
// Unrelated code edited out - end brackets may not match 100%

function isEmpty(obj) {
  for(var prop in obj) {
      if(obj.hasOwnProperty(prop))
          return false;
  }
  return true;
 }

現在、デスクトップでは、これは意図したとおりに機能します。ただし、Android ではそうではありません。最初に入力しif(response.data) {ますが、データを返す必要がある次の警告ボックスには空が返されます。したがって、次の if 文には入りません。

私が理解していない部分は、最初の if ( response.dataexists) に入り、2番目に入らない理由です (ページが気に入られたとしても、応答が何らかの形で空であるため)。

残念ながら、テストする別のデバイスはありません。

明らかな明らかな間違いを見落としていますか?それを救うために私は何ができますか?

4

1 に答える 1

0

私はそれを考え出した。「いいね」は基本情報の一部だと思っていたので、必要な許可を求めていなかったようです。私のばかげたこと、私は理解しています。

FB.login(function(response) {
  // Truly amazing code goes here
}, { scope : 'user_likes' }); // Scope is important, yo

私が理解していないのは、デスクトップでは機能するのにモバイルでは機能しない理由ですが、機能するようになったことに満足しています.

于 2013-09-01T14:16:59.043 に答える