2016-02-19 68 views
1

我有一個應用程序與Facebook登錄和登錄和獲取基本的個人資料信息工作正常。但是,當我嘗試獲取Facebook朋友(只返回也使用相同應用的朋友)時,我從Facebook API獲取[object Object]。我有權設置好朋友(根據我的應用的Facebook開發者頁面)。Facebook圖形API我/朋友沒有返回

我的代碼看起來像這樣(我使用PhoneGap的插件,但該代碼是類似於JS版Facebook的API):

// Login function (permissions included) 
var login = function() { 
    if (!window.cordova) { 
     var appId = prompt("123456789101112", ""); 
    } 
    facebookConnectPlugin.login(["email, user_friends"], 
     // SUCCESS 
     function (response) { 
      alert('Login successful!'); 
     }, 
     // FAILURE 
     function (response) { 
      alert('Login failed') 
     } 
    ); 
} 

// Get the friends 
var getFacebookFriends = function() { 
    facebookConnectPlugin.api("me/friends", 
    // FAILURE 
    function(response) { 
     alert('Retrieving Facebook friends failed'); 
    }, 
    // SUCCESS 
    function(response) { 
     alert(JSON.stringify('Facebook friends: ' + response)); 
    }); 
} 

警報說Facebook friends: [object Object]。我確信我有一位朋友也使用相同的權限登錄到應用程序。他沒有出現在名單上,只有空的[object Object]。爲什麼我會得到這個迴應,而不是朋友的名單?

回答

1

它不是空的,它是一個JSON對象。你只需要它正確地解碼:

alert('Facebook friends: ' + JSON.stringify(response)); 

您也可以只使用console.log

console.log(response); 

只需將手機連接到電腦上,而你的應用程序正在運行,並使用chrome://inspect調試它像一個網站(因爲那就是它)。

0

如果要定義一個函數,你可以這樣做:

function name() { 
... 
} 

是的,你可以留下變種關鍵字。另外,你應該試試這個:

function getFacebookFriends() { 
    facebookConnectPlugin.api('/me/friends', function(response) { 
     if(response.data) { 
      $.each(response.data,function(index,friend) { 
       alert(friend.name + ' - FB ID:' + friend.id); 
      }); 
     } else { 
      alert("Unable to return Facebook friends!"); 
     } 
    }); 
} 
+0

不知道你爲什麼提到var關鍵字(在這種情況下它並不重要),但我不會爲這個簡單的任務使用jquery ... – luschn

-1
I just Hope if this could help you !! 

[FBSDKProfile enableUpdatesOnAccessTokenChange:YES]; in - (void)viewDidLoad Method 

- (IBAction)Loginwithfacebookaction:(id)sender 

{ 
    FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; 
    [login logOut]; 
    [login logInWithReadPermissions:@[@"public_profile", @"email"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { 

     if (error) 
     { 

      // There is an error here. 

     } 
     else 
     { 
      if(result.token) // This means if There is current access token. 
      { 
       // Token created successfully and you are ready to get profile info 
       [self Method]; 
      } 
     } 
    }]; 
    } 

-(void)Method { 

    FBSDKGraphRequest *requestMe = [[FBSDKGraphRequest alloc]initWithGraphPath:@"/me?fields=first_name, last_name, picture, email" parameters:nil]; 

    FBSDKGraphRequestConnection *connection = [[FBSDKGraphRequestConnection alloc] init]; 

    [connection addRequest:requestMe completionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { 

     if(result) 
     { 
      if ([result objectForKey:@"email"]) { 
       email = [result objectForKey:@"email"]; 

      NSLog(@"Email: %@",[result objectForKey:@"email"]); 
       [[NSUserDefaults standardUserDefaults] setObject:email forKey:@"useremail"]; 

      } 
      if ([result objectForKey:@"first_name"]) { 

       NSLog(@"First Name : %@",[result objectForKey:@"first_name"]); 
       name = [result objectForKey:@"first_name"]; 
       [[NSUserDefaults standardUserDefaults] setObject:name forKey:@"userNameLogin"]; 
      } 
      if ([result objectForKey:@"id"]) 
      { 
      NSLog(@"User id : %@",[result objectForKey:@"id"]); 

      } 
        } 


    }]; 
    [connection start]; 
} 
相關問題