Joh*_*ens 10 iphone facebook ios
我正在尝试将facebook应用到我的iOS应用程序中用于学校项目但是我遇到了一些障碍,即没有调用fbDidLogin方法.
我创建了一个名为FBFetcher的示例对象,如下所示:
@interface FBFetcher : NSObject <FBDialogDelegate,FBSessionDelegate,FBRequestDelegate> {
Facebook *facebook;
FBFetcher *facebookFetcher;
}
-(void)login;
@property (retain) Facebook *facebook;
@property (retain) FBFetcher *facebookFetcher;
@end
Run Code Online (Sandbox Code Playgroud)
在FBFetcher.m中:
@implementation FBFetcher
@synthesize facebookFetcher,facebook;
-(void)login{
facebook = [[Facebook alloc] initWithAppId:@"...."];
NSArray *permissions = [[NSArray arrayWithObjects: @"offline_access",@"user_about_me", nil] retain];
[facebook authorize:permissions delegate:self];
}
-(void)fbDidLogin {
NSLog(@"Erfolgreich eingeloggt....");
}
@end
Run Code Online (Sandbox Code Playgroud)
在我的应用代表中:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [[[controller facebookFetcher] facebook] handleOpenURL:url];
}
Run Code Online (Sandbox Code Playgroud)
我有一个单独的视图控制器,其中n动作绑定到UIButton:
facebookFetcher = [[FBFetcher alloc] init];
[facebookFetcher login];
Run Code Online (Sandbox Code Playgroud)
我可以访问登录和授权页面,但fbDidLogin方法永远不会被调用.有什么建议?
Met*_*kin 33
永远不会调用该方法,因为在授权时,您在Safari中执行此操作.为了解决这个问题,我认为这是Facebook SDK中的一个错误,打开facebook.m文件并找到以下行:
[self authorizeWithFBAppAuth:YES safariAuth:YES];
Run Code Online (Sandbox Code Playgroud)
并将其更改为
[self authorizeWithFBAppAuth:NO safariAuth:NO];
Run Code Online (Sandbox Code Playgroud)
这样您就永远不会被发送到Safari,但一切都将在对话框中完成.
只需测试它,你就会看到该fbDidLogin方法将被调用.
希望它会有所帮助
| 归档时间: |
|
| 查看次数: |
4674 次 |
| 最近记录: |