【问题标题】:Facebook API for IOS适用于 IOS 的 Facebook API
【发布时间】:2012-03-28 05:41:54
【问题描述】:

我在我的应用程序中包含适用于 IOS 的 Facebook API,以便在 Facebook 中分享我的应用程序的链接。当我从我的应用程序中单击“共享”时,它会在我已经在我的设备中登录 facebook 时共享链接。如果不是,它要求我登录。登录后,窗口关闭并且不共享该链接。我需要再次点击“分享”来分享链接。登录后我需要自动分享什么。 请帮助我。

【问题讨论】:

  • 登录后是否重新启动了您的应用?
  • 贴出你的facebook部分代码
  • 你在Facebook documentation上关注了Modify the application delegate header file: Step 2
  • 如果您可以发布您的 facebook 集成代码,那么有人可以轻松帮助您
  • @peterept:它不会重新启动应用程序。它关闭了我登录 facebook 并返回我的应用程序的窗口。

标签: ios facebook


【解决方案1】:

您是否使用了 iOS 版 Facebook SDK (https://developers.facebook.com/docs/mobile/ios/build/)?我严格按照这些说明进行操作,第一次尝试对我来说效果很好。对我来说,唯一的窍门是当人们没有 Facebook 应用程序时,通过替换来确保应用程序不会启动 Safari 进行身份验证的讨论过很多的解决方案:

[self authorizeWithFBAppAuth:YES safariAuth:YES];

[self authorizeWithFBAppAuth:YES safariAuth:NO];

在 Facebook.h 的 (void)authorize:(NSArray *)permissions 方法中。但除此之外,我只是按照上面网站上的说明进行操作,它对我来说是无缝的。

如果这不能回答您的问题,也许您可​​以发布一些代码,以便我们帮助诊断发生了什么。这个问题(在没有代码的情况下)有点模棱两可。

【讨论】:

    【解决方案2】:

    如果您对 facebook API 集成有任何疑问,请查看我的问题。

    Facebook API dialog page showing error in second time and after that

    试试这个代码:

    -(void)buttonPressed:(id)sender{
    facebook = [[Facebook alloc] initWithAppId:@"YOUR_APP_ID" 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]) {
        [facebook authorize:nil];
    }else{
    [self postWall];
    }
    // Pre 4.2 support
    - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
        return [facebook handleOpenURL:url]; 
    }
    - (void)fbDidLogin {
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        [defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
        [defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
        [defaults synchronize];
        [self postWall];
    }
    -(void)postWall{
    
        NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                @"https://developers.facebook.com/docs/reference/dialogs/",@"link",
                                       @"http://fbrell.com/f8.jpg",@"picture",
                                       @"Facebook Dialogs",@"name",
                                       @"Reference Documentation",@"caption",
                                       @"Using Dialogs to interact with users.",@"description",
                                       @"Facebook Dialogs are so easy!",@"message",
                                       nil];
    
        [[self facebook] dialog:@"feed" andParams:params andDelegate:self];
    
    }
    

    【讨论】:

    • 其实这不是我的情况。
    • 是的,我知道。我希望您从 facebook 的 Hackbook 示例应用程序中复制并粘贴您的代码。
    • 是的。我现在解决了这个问题。
    • 你是怎么做到的?写一个答案并至少接受你自己。这可能会帮助许多其他人
    【解决方案3】:

    如果您的应用在登录后没有重新启动您的应用(从浏览器或如果用户已安装 Facebook 应用),那么您还没有将您的 FB 应用 ID 添加到您的 Info.plist(这就是您的应用的方式启动)

    在此处查看documentation 转到修改应用属性列表文件部分:

    ... 创建一个名为 URL types 的新行,其中包含单个项目 URL Schemes, 包含单个值 fbYOUR_APP_ID(文字字符 fb 后跟您的应用 ID)。以下显示了该行的确切方式 应该出现在 .plist 文件中...

    例如:

    URL Types.[0].URL Schemes.[0].fb1234(您的 Facebook 应用程序 ID 为 1234)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-02
      • 1970-01-01
      相关资源
      最近更新 更多