2

我正在为 Facebook 和 Twitter 使用 Sharekit,我想获取 Facebook 帐户详细信息,例如用户 ID、个人资料名称等。请提供您的建议和帮助。我之前得到了详细信息,但现在我无法检索它。

请在下面找到代码,

 if ([[NSUserDefaults standardUserDefaults] objectForKey:@"kSHKFacebookUserInfo"]){
            NSDictionary *facebookUserInfo = [[NSUserDefaults standardUserDefaults] objectForKey:@"kSHKFacebookUserInfo"];
           fbUseremail = [facebookUserInfo objectForKey:@"email"];
            NSLog(@"FBid-- %@",fbUseremail);
        }
        if ([[NSUserDefaults standardUserDefaults] objectForKey:@"kSHKFacebookUserInfo"]){
            NSDictionary *facebookUserInfo = [[NSUserDefaults standardUserDefaults] objectForKey:@"kSHKFacebookUserInfo"];
            fbUserName = [facebookUserInfo objectForKey:@"name"];
            NSLog(@"FBName-- %@",fbUserName);
        }

现在它崩溃了,因为 facebookUserInfo 为 NULL。

4

2 回答 2

1

我刚刚使用演示应用程序进行了尝试,并且效果很好。要查找正在发生的事情,您可以在 SHKFacebook.m- (void)request:(FBRequest *)fbRequest didLoad:(id)result的第 411 行中休息一下。现在您可以看到,您从 Facebook 得到了什么。

要获取用户信息,您必须首先从 Facebook 获取:

SHKItem *item = [[SHKItem alloc] init];
item.shareType = SHKShareTypeUserInfo;
[SHKFacebook shareItem:item];
于 2012-06-28T12:03:19.260 回答
0

您可以使用 Facebook Graph API 获取用户名。将以下方法添加到 FBConnect 包的 FBSession.m 类中。

 #import "JSON.h"

............

static NSString *const kGraphAPIURL = @"https://graph.facebook.com/";
//static NSString *const kFBGraphAPIUserName = @"name";

............

// Get user name via Facebook GraphAPI.

- (NSString *)getUserNameByUID:(FBUID)aUID {

 NSString *userName_ = nil;

 NSURL *serviceUrl = [NSURL URLWithString:[NSString stringWithFormat:@"%@%qi", kGraphAPIURL, aUID]];

 [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;

 NSError *error = nil;
 NSString *jsonString = [NSString stringWithContentsOfURL:serviceUrl encoding:NSUTF8StringEncoding error:&error];

 if (error != nil) {
   NSLog(@"######### error: %@", error);
 }

 if (jsonString) {

    // Parse the JSON into an Object and 
    // serialize its object to NSDictionary
    NSDictionary *resultDic = [jsonString JSONValue]; // U have resultDic with information

    //if (resultDic) {
        //userName_ = [resultDic valueForKey:kFBGraphAPIUserName];
    //}
 }

 [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;

 return userName_;
}
于 2012-06-28T10:57:05.237 回答