我正在努力找到这个。我可以在FBDialog中打开URL还是在FBConnect中使用某些东西。我试图像下面这样。但这似乎不起作用。

FBDialog *dlg = [FBDialog new];
[dlg loadURL:@"http://www.facebook.com/pages/Apple-Inc/137947732957611" get:nil];

我什至不知道这是否可能。你们能帮我吗?

最佳答案

有2个问题使您无法使用自己的代码。首先,当您将URL传递给-loadURL:get:方法时,Facebook iOS SDK会根据您的URL重建真实的URL。因此,您传递的网址最终将不会进入Webview。您需要做的是在FBDialog.m中实现一个方法,如下所示:

-(void)hackLoadURL:(NSString*)url withDelegate:(id)delegate {
    _webView.delegate = delegate;
    [_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]];
}

第二个问题是您需要破解
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;

委托(delegate)方法,并替换为您执行的方法。但是为了保持原始Facebook SDK的正常运行,您需要在FBDialog.m中添加以下代码
_webView.delegate = self;

在-loadURL:get:方法中,并且在此行之前
[_webView loadRequest:request];

最后,您需要实现
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;

自己上课,并使用
FBDialog *dlg = [FBDialog new];
[dlg hackLoadURL: yourExpectUrl withDelegate: self];

做你想做的。

10-08 05:21