Swift通过FacebookUID打开Facebook资料

我试图用他们的Facebook UID在Swift中打开用户的Facebook个人资料。 在模拟器,它的工作原理和打开configuration文件的Web版本,并正常工作,但是在我的实际设备上,它打开了Facebook本地应用程序,并给我一个“页面找不到”的错误。

guard let facebookUID = self.user?.facebookUID else { return } print(facebookUID) let fbURLWeb: NSURL = NSURL(string: "https://www.facebook.com/\(facebookUID)")! let fbURLID: NSURL = NSURL(string: "fb://profile/\(facebookUID)")! if(UIApplication.sharedApplication().canOpenURL(fbURLID)){ // FB installed UIApplication.sharedApplication().openURL(fbURLID) } else { // FB is not installed, open in safari UIApplication.sharedApplication().openURL(fbURLWeb) } 

在这里输入图像说明

我究竟做错了什么?

提前致谢!

编辑

我注意到,如果用户删除或没有在手机上安装Facebook应用程序,它将通过Safari正确打开configuration文件,这就是为什么它在模拟器上工作,但没有在我的设备上。 不过,我也注意到,如果我尝试像fb://profile/4 (这是Mark Zuckerburg的个人资料)这样的公开个人资料,我可以在Facebook应用中使用它。

在这里输入图像说明

嗨基于文档 Facebook的ID是应用范围的用户ID,所以你可以使用像

 fb://profile?app_scoped_user_id=%@ 

但也检查https://developers.facebook.com/bugs/332195860270199错误报告打开Facebookconfiguration文件

fb://profile?app_scoped_user_id=%@

不被支持。

所以你必须在Safari中打开Facebookconfiguration文件,或者你可以在应用程序webview中使用打开用户configuration文件。 我已经检查了一些脸书id 10000 **** 889,10000 *** 041等所有在facebook应用程序中打开configuration文件。是有一些有相同的错误。find。

可能有隐私设置 – >你想要外部链接到你的个人资料的search引擎 – >没有。 限制search。

从Facebook获取用户ID窍门:

1)右键点击个人或网页的个人资料照片,select属性,该ID将包括在页面中

2)在移动browswe,如果你打开的照片有id例如“fbid = ***&PID = 1000 …. 89”所以1000 …. 89将是你的用户ID

这是另一个适用于iOS 10Swift 3解决scheme。

首先,您应该将LSApplicationQueriesSchemes键添加到Info.plist文件。 如果你不添加这个键, canOpenURL将总是返回false 。 比你需要添加什么scheme(S)你想检查。 使用fb作为facebook。

它应该看起来像这样:

在这里输入图像说明

其余的是Swift:

 if UIApplication.shared.canOpenURL(URL(string: "fb://profile/PROFILE_ID")!) { UIApplication.shared.open(URL(string: "fb://profile/PROFILE_ID")!, options: [:]) } else { UIApplication.shared.open(URL(string: "https://facebook.com/PROFILE_ID")!, options: [:]) } 

注意:将PROFILE_IDreplace为您的目标。