我在Facebook上发表评论时遇到了很多麻烦。这是我如何设置代码;在我的viewController类中,我设置了一个按钮,按下时检查用户是否连接到Facebook。如果它们没有连接,我会尝试建立连接。这是.h和.m文件的代码:
.h文件
#import <UIKit/UIKit.h>
#import "FBConnect.h"
@interface Info_Main_ViewController : UIViewController <FBSessionDelegate>
{
Facebook *facebook;
}
@property(nonatomic, retain)Facebook *facebook;
- (IBAction)shareButtonPressed:(id)sender;
- (void)setUpFacebookConnection;
.m文件
- (IBAction)shareButtonPressed:(id)sender
{
if (facebook == nil)
{
// Setup Facebook connection
[self setUpFacebookConnection];
}
}
- (void)setUpFacebookConnection
{
facebook = [[Facebook alloc] initWithAppId:@"xxxxxx" andDelegate:self];
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:
@"publish_actions",
nil];
[facebook authorize:permissions];
}
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
return [facebook handleOpenURL:url];
}
- (void)fbDidLogin
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
[defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
[defaults synchronize];
}
当我运行此代码并按下按钮时,它会打开带有页面的safari,允许用户选择是否允许应用程序访问Facebook。一旦你接受了它,它就会切换回我的应用程序,但方法fbDidLogin
永远不会被调用,所以我不能发布任何消息。
请有人帮助我,我花了很长时间在互联网上搜索建议,但所有相关文章都已过时或者他们与app委托类中的Facebook设置有关联。在我的情况下,我只想让用户在选择时进行连接(即当他们按下按钮时)。
答案 0 :(得分:2)
此方法:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
return [facebook handleOpenURL:url];
}
必须放在您的应用程序委托中。您必须更改对facebook
实例的引用,以便它在应用程序委托中有效。