2013-03-06 101 views
1

我正在開發一個iPhone應用程序,我希望能夠列出連接到我的應用程序和訪問他們的電子郵件的用戶的朋友,如果他們已經授予我的應用程序訪問權限他們的電子郵件。iOS Facebook的SDK - 獲取朋友的電子郵件

這是我使用打開Facebook的會議代碼:

- (BOOL)openSessionWithAllowLoginUI:(BOOL)allowLoginUI { 

    NSArray *permissions = [[NSArray alloc] initWithObjects: 
        @"email", 
        nil]; 

    return [FBSession openActiveSessionWithReadPermissions:permissions 
             allowLoginUI:allowLoginUI 
           completionHandler:^(FBSession *session, 
                FBSessionState state, 
                NSError *error) { 
            [self sessionStateChanged:session 
                 state:state 
                 error:error]; 
           }]; 
} 

此外,在ViewController.m,我使用下面的代碼列出的朋友,並得到他們的電子郵件:

NSString *query = 
     [NSString stringWithFormat:@"SELECT name, uid, pic_small, birthday,proxied_email, contact_email , email FROM user WHERE is_app_user = 1 and uid IN (SELECT uid2 FROM friend where uid1 = %@) order by concat(first_name,last_name) asc", my_fb_uid ]; 

     // Set up the query parameter 
     NSDictionary *queryParam = 
     [NSDictionary dictionaryWithObjectsAndKeys:query, @"q", nil]; 
     // Make the API request that uses FQL 

    [FBRequestConnection startWithGraphPath:@"/fql" 
         parameters:queryParam 
         HTTPMethod:@"GET" 
        completionHandler:^(FBRequestConnection *connection, 
             id result, 
             NSError *error) { 
         if (error) { 
          NSLog(@"Error: %@", [error localizedDescription]); 
         } else { 
          NSLog(@"Result: %@", result); 
         } 
        }]; 

問題是,即使是安裝我的應用程序並授權訪問其電子郵件的朋友,返回的電子郵件始終爲空。

對此有何建議?

回答

19

documentation

Note: There is no way for apps to obtain email addresses for a user's friends. 

email權限只對LOGGED_IN用戶

4

你應該做的是,當用戶授權訪問他們的Facebook帳戶,您應該存儲他們的FB用戶ID 。然後,當試圖找到用戶的朋友時,請求用戶的FB朋友(http://developers.facebook.com/docs/reference/ios/3.2/class/FBRequest#requestForMyFriends)的請求並比較返回的ID。這是做你想做的事的正確方法。

+0

爲什麼要投票?有很多這樣的例子,包括Parse.com,它在AnyPic示例應用程序中實現了相同的策略。如果我錯過了一些東西,我很想知道。 – 2013-03-07 02:58:14

相關問題