gpt4 book ai didi

iphone - 用户身份验证后永远不会调用 Facebook SDK 方法 'fbDidLogin' (iOS)

转载 作者:行者123 更新时间:2023-11-29 11:17:35 24 4
gpt4 key购买 nike

我在向 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 永远不会被调用,所以我不能发布任何消息。

有人能帮帮我吗,我花了很长时间在互联网上搜索建议,但所有相关文章要么已经过时,要么在应用程序委托(delegate)类中与 Facebook 设置相关联。而在我的情况下,我只想让用户在他们选择时连接(即当他们按下按钮时)。

最佳答案

这个方法:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
return [facebook handleOpenURL:url];
}

必须放在您的应用程序委托(delegate)中。当然,您必须更改对 facebook 实例的引用,以便它在应用程序委托(delegate)中有效。

关于iphone - 用户身份验证后永远不会调用 Facebook SDK 方法 'fbDidLogin' (iOS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8747803/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com