我正在尝试将我的Facebook SDK升级到最新的生产版本(FacebookSDK-3.0.8.pkg - 适用于iOS的Facebook SDK 3.0(更新1)[2012年8月21日]).
我正在关注此页面上的教程.
我试图让代码工作时遇到了几个问题,它并不像它在教程中宣称的那么容易.我可以打开我的会话,但无法获得请求.
- (IBAction)facebookTapped:(id)sender {
[FBSession openActiveSessionWithPermissions:nil allowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
if(error) {
NSLog(@"Error opening session: %@", error);
return;
}
if(session.isOpen) {
NSLog(@"session is open");
FBRequest *me = [FBRequest requestForGraphPath:@"me"];
[me startWithCompletionHandler:^(FBRequestConnection *connection,
NSDictionary<FBGraphUser> *my,
NSError *error) {
NSLog(@"My name: %@", my.first_name);
}];
}
}];
}
Run Code Online (Sandbox Code Playgroud)
如果我删除对FBRequest requestforGraphpath的调用,我的控制台会显示会话已打开.如果我留下它,我收到错误"不兼容的块指针类型初始化'void(^)(struct FBRequestConection ,struct NSDictionary,struct NSError*)',期望'FBRequestHandler'
现在让我难过的是,这是教程中显示的确切代码,我尝试了不同的方法改变了[FBRequest requestForMe].没有用.
任何人都可以为我阐明这一点吗?
谢谢.
我能够通过在以下教程中更改原始块来解决此问题:
if (session.isOpen) {
FBRequest *me = [FBRequest requestForMe];
[me startWithCompletionHandler: ^(FBRequestConnection *connection,
NSDictionary<FBGraphUser> *my,
NSError *error) {
self.label.text = my.first_name;
}];
}
Run Code Online (Sandbox Code Playgroud)
至
if(session.isOpen) {
FBRequest *me = [FBRequest requestForMe];
[me startWithCompletionHandler:^(FBRequestConnection *connection,
id result,
NSError *error) {
NSDictionary<FBGraphUser> *my = (NSDictionary<FBGraphUser> *) result;
NSLog(@"My dictionary: %@", my.first_name);
}];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6179 次 |
| 最近记录: |