在IPhone应用程序中显示Facebook好友列表
我正在制作一个IPhone应用程序,其中我连接了Facebook。我在第一个视图控制器上单击按钮连接它。现在我添加第二个按钮并打开第二个视图控制器。我想按字母顺序显示我的朋友列表。我在网上搜索它,但当我在我的 应用程序,它在运行时崩溃请帮助我- 在我的代表课上在IPhone应用程序中显示Facebook好友列表,iphone,facebook-graph-api,Iphone,Facebook Graph Api,我正在制作一个IPhone应用程序,其中我连接了Facebook。我在第一个视图控制器上单击按钮连接它。现在我添加第二个按钮并打开第二个视图控制器。我想按字母顺序显示我的朋友列表。我在网上搜索它,但当我在我的 应用程序,它在运行时崩溃请帮助我- 在我的代表课上 (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.
(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.
self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease];
navController =[[UINavigationController alloc] initWithRootViewController:self.viewController];
self.window.rootViewController = navController;
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"FBAccessTokenKey"]
&& [defaults objectForKey:@"FBExpirationDateKey"]) {
facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
}
[self.window makeKeyAndVisible];
return YES;
}
-(void)fbDidLogin
{
NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
[defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
[defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
}
我的第二个视图控制器,我想在其中显示我的朋友列表
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
NSArray *_permissions = [[NSArray arrayWithObjects:@"read_stream", @"publish_stream", @"offline_access",@"read_friendlists",nil] retain];
[facebook authorize:_permissions];
facebook = [[Facebook alloc] initWithAppId:@"APP_ID_HERE" andDelegate:self];
[facebook requestWithGraphPath:@"me" andDelegate:self];
[facebook requestWithGraphPath:@"me/friends" andDelegate:self];
// NSMutableDictionary*params = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"4",@"uids", @"name", @"fields", nil];
[facebook requestWithGraphPath:@"me/friends"
andParams:[ NSDictionary dictionaryWithObjectsAndKeys:@"picture,id,name,link,gender,last_name,first_name",@"fields",nil]
andDelegate:self];
}
感谢您的帮助。问题1:这一行:
facebook = [[Facebook alloc] initWithAppId:@"XXXXXXXXXXXXX" andDelegate:self];
在尝试读取NSUserDefaults并访问尚未初始化的Facebook对象之前,需要在didFinishLaunchingWithOptions中的应用程序代理中。还应将其从视图控制器中删除
问题#2:您的应用程序委托和视图控制器中似乎都声明了一个facebook变量。整个应用程序中应该只有一个Facebook实例。当您从视图控制器调用它时,您应该执行以下操作以获取对存储在应用程序代理中的Facebook实例的引用:
Facebook *facebook = ((MyAppDelegate *)[[UIApplication sharedApplication] delegate]).facebook;
您还需要确保在应用程序委托中实现了openURL方法,并按照安装说明在plist文件中创建URL方案
另外,您不应该将AppId发布到公共论坛。如果出现错误,请同时粘贴堆栈跟踪@用户1369291。我注意到你没有投票或接受你的任何问题的答案。这善意地指出,如果你发现一个答案有帮助和有用,请投票表决。如果答案回答了你的问题,请接受它。