【问题标题】:Popup Facebook feed iOS弹出 Facebook 提要 iOS
【发布时间】:2012-05-22 21:55:43
【问题描述】:

我正在尝试在我的应用中实现 Facebook sdk,但在显示写入墙/提要弹出窗口时遇到问题。我可以从我的应用程序成功登录 Facebook。首先它把我带到本机 Facebook 应用程序,一旦我授权它,它就把我带回我的默认应用程序,没有任何反应。该对话框没有出现,我看到的只是我创建的空视图。这是我的代码,如果有人知道为什么这不起作用,我将不胜感激。

谢谢

fbViewController.h

#import <UIKit/UIKit.h>
#import "FBConnect.h"

@interface fbViewController : UIViewController <UIApplicationDelegate,FBSessionDelegate,FBDialogDelegate>
{
 Facebook *facebook;
}

@property (nonatomic, retain) Facebook *facebook;
@end

fbViewController.m

#import "fbViewController.h"
#define kAppId @"xxxxxxx"

 - (void)viewDidLoad
{
[super viewDidLoad];

facebook = [[Facebook alloc] initWithAppId:@"xxxxxxxxxxx" 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];
}

}

 - (void)fbDidLogin {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
[defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
[defaults synchronize];


NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                               kAppId, @"app_id",
                               @"http://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",
                               nil];

[facebook dialog:@"feed" andParams:params andDelegate:self];

  }

myAppDelegate.m

// Pre iOS 4.2 support
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
   return [facebook handleOpenUrl:url];
  }

// For iOS 4.2+ support
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [facebook handleOpenURL:url]; 
 }

【问题讨论】:

  • 您是否尝试设置断点以确保您的 [facebook dialog:andParams:andDelegate:] 被调用?
  • 我会首先在 fbDidLogIn 中使用 NSLog 语句,并在 request:didLoad: 中(假设您在代码中的某处发送某种请求)查看登录是否成功以及您是否实际接收数据。如果您实际上已登录并获取数据,那么您的问题在于如何将数据放在视图上。但从我们这里的情况来看,我们无法知道这一点。
  • @Inturbidus 该应用永远不会进入 fbDidLogin。我不知道为什么。有什么建议么?谢谢
  • @geraldWilliam 该应用永远不会进入 fbDidLogin。我不知道为什么。有什么建议么?谢谢

标签: objective-c ios xcode


【解决方案1】:

我为此苦苦挣扎了一段时间。 Here's我在试图整理它时发布的 SO 问题。实施 dmirkitanov 在他的回答中建议的测试可能是值得的。它来自 Hackbook 应用程序(通过 facebook-ios-sdk 获得的应用程序)。

长话短说,我要做的就是从 Facebook 开发者网站删除我的应用程序,从 iTunes 商店中删除它,然后从第一方重新提交,然后在我的应用程序中使用新的应用程序 ID 信息等代码。我认为它在 Facebook 端的注册方式存在一些问题。

【讨论】:

  • 感谢杰拉德的回复,但这似乎很极端,我不想走这条路,我觉得我错过了一件简单的事情
  • 我当然也有同感。我只是想让你知道,如果像我一样,你最终把头撞到墙上一个星期试图解决它,这就是我解决它的原因。
【解决方案2】:

看来,AppId 不正确。尝试使用其他应用 ID 并检查

1) 信息 -> FacebookAppID 与您代码中的此应用 ID 相同

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-06
    • 2015-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-14
    相关资源
    最近更新 更多