Objective c 使用SSO facebook的故事链接流-未调用openURL
我已成功在iOS 4.3应用程序中实现单点登录。现在我想发布一个到用户facebook墙的链接,这样当他/她的朋友也拥有该应用程序时,他们应该被重定向到我的应用程序。我的解释是,其中一个委托函数Objective c 使用SSO facebook的故事链接流-未调用openURL,objective-c,ios,facebook,fbconnect,openurl,Objective C,Ios,Facebook,Fbconnect,Openurl,我已成功在iOS 4.3应用程序中实现单点登录。现在我想发布一个到用户facebook墙的链接,这样当他/她的朋友也拥有该应用程序时,他们应该被重定向到我的应用程序。我的解释是,其中一个委托函数 - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url, (pre iOS 4.2) - (BOOL)application:(UIApplication *)application openURL:(NSU
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url, (pre iOS 4.2)
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication annotation:(id)annotation , (iOS 4.2+)
将被调用,并且可以从[target_link]键解析共享链接。然而,我不能让它工作。我使用以下方法成功地将我的链接发布到用户新闻源:
NSDictionary* params=[[NSDictionary alloc] initWithObjectsAndKeys:myFacebookAppID,@"app_id",
linkToPost,@"link",nil];
[_facebook dialog:@"feed" andParams:params andDelegate:self]
帖子出现在我的新闻提要上,但是当我点击链接时,上面提到的委托方法都没有被调用。如果我要对链接做一些特殊的处理,我已经尝试在链接前面添加“fb:myFacebookAppID://”,但这根本不起作用。我误解了什么吗
我的应用程序尚未在AppStore上上线,developers.facebook.com上有一个字段要求我输入我的AppStore ID,这可能是问题所在吗?如果有,是否有解决办法?我想在将我的应用程序发送到AppStore之前测试它是否正常工作
谢谢你的帮助 您需要在AppDelegate中安装facebook Instance,例如:
@interface FacebookAppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) UINavigationController *navigationController;
@property (nonatomic, strong) Facebook *facebook;
@end
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.viewController = [[FacebookViewController alloc] initWithNibName:@"FacebookViewController" bundle:nil];
self.facebook = [[Facebook alloc] initWithAppId:kAppId andDelegate:(id)self.viewController];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"FBAccessTokenKey"] && [defaults objectForKey:@"FBExpirationDateKey"]) {
self.facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
self.facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
}
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
}
如果你想在自己的课堂上实现协议,你必须打电话给facebook:
FacebookAppDelegate *fbAppDelegate = (FacebookAppDelegate *)[[UIApplication sharedApplication] delegate];
NSArray *permissions = [[NSArray alloc] initWithObjects:@"publish_stream",@"create_event",@"offline_access", nil];
[[fbAppDelegate facebook] authorize:permissions];
FacebookAppDelegate *fbAppDelegate = (FacebookAppDelegate *)[[UIApplication sharedApplication] delegate];
NSArray *permissions = [[NSArray alloc] initWithObjects:@"publish_stream",@"create_event",@"offline_access", nil];
[[fbAppDelegate facebook] authorize:permissions];