-3

你好,所以我刚开始使用 Facebook iOS SDK,我可以轻松登录 Facebook,但我在弄清楚如何获取用户全名并将其显示在 UILabel 中时遇到了问题。我也是从 UIViewController 执行此操作的,到目前为止,我在互联网上看到的所有内容都发生在应用程序委托中,但是,我不希望它从委托中完成,它只是不适合做的地方我希望它在 UIViewController 中,所以当按下按钮时,您可以登录 Facebook。Facebook SDK 现在看起来很复杂,因为它是我第一次使用它。

编辑:好的继承人我的一些代码。这是在视图控制器中:

-(void)createfbInstance {

Facebook* fb = [[Facebook alloc] initWithAppId:FB_APP_ID andDelegate:self];
self.facebook = fb;

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"FBAccessTokenKey"] 
    && [defaults objectForKey:@"FBExpirationDateKey"]) {
    facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
    facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
}

if (![facebook isSessionValid]) {
    NSArray* permissions = [[NSArray alloc] initWithObjects:@"user_about_me", nil];
    [facebook authorize:permissions];
} 
}

所以我只是像 Facebook 教程那样设置它然后我尝试使用图形路径发送请求:

- (void)fbDidLogin {

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
[defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
[defaults synchronize];

FBAppDelegate* appDelegate = (FBAppDelegate*)[[UIApplication sharedApplication] delegate];
[appDelegate.facebook requestWithGraphPath:@"name" andDelegate:self];
}

然后尝试接收请求:

 - (void)request:(FBRequest *)request didLoad:(id)result {

 }

抱歉,我很沮丧,并从该方法中删除了代码。然后在委托中我有 Facebook 属性

@property (nonatomic, retain) Facebook* Facebook;

文件中还有其他代码,但这似乎是最重要的代码。

4

1 回答 1

1

在您需要访问 Facebook API 的任何类中,您都需要包含以下文件(在头文件中):

#import "FBConnect.h"
#import "YOUR_APP_DELEGATE.h"

并让你的班级实现FBRequestDelegate委托。

然后为了使用它,您只需执行以下操作:

    YOURAPPDELEGATE *appDelegate = (YOURAPPDELEGATE*)[[UIApplication sharedApplication] delegate];

有了它,您现在可以访问您在委托中拥有的 Facebook 属性,从而允许您访问 API。

现在您需要- (void)request:(FBRequest *)request didLoad:(id)result在视图控制器中添加该方法,以便您可以接收响应。

所以现在你可以打电话

        [appDelegate.facebook requestWithGraphPath:@"APICALLHERE" andDelegate:self];

现在您将收到request:didLoad:方法中的响应,然后您可以随心所欲地做任何事情。

于 2012-07-18T01:45:14.753 回答