Tho*_*mas 7 facebook facebook-graph-api ios facebook-sdk-4.0 swift
我正在尝试使用他们的Facebook UID在Swift中打开用户的Facebook个人资料.在模拟器中,它工作并打开配置文件的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)
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
提前致谢!
编辑
我注意到如果用户删除或没有在手机上安装Facebook应用程序,它将通过Safari正确打开配置文件,这就是为什么它在模拟器上工作,但没有在我的设备上.但是,我也注意到如果我尝试公开的个人资料fb://profile/4
(这是Mark Zuckerburg的个人资料),我可以在Facebook应用程序中使用它.
嗨,基于文档 Facebook ID是应用程序范围的用户ID,所以你可以使用喜欢
fb://profile?app_scoped_user_id=%@
Run Code Online (Sandbox Code Playgroud)
但也请查看https://developers.facebook.com/bugs/332195860270199上的错误报告,打开Facebook个人资料
fb://profile?app_scoped_user_id=%@
不受支持.
因此,您必须在Safari中打开Facebook个人资料,或者您可以在应用webview中使用以打开用户个人资料.我已经检查了一些facebook id 10000****889,10000***041等所有在facebook app中都有开放的个人资料.有些人有同样的错误.Page bot找到了.
可能有隐私设置 - >你想要搜索引擎外链接到你的个人资料 - >没有.限制搜索.
从facebook Trick获取用户的ID:
1)右键单击人物或页面的个人资料照片,选择属性,ID将包含在页面中
2)在手机浏览器中,如果你打开照片有id例如"fbid =***&pid = 1000 .... 89"所以1000 .... 89将是你的用户ID
这是另一种适用于iOS 10
&的解决方案Swift 3
.
首先,您应该将LSApplicationQueriesSchemes
密钥添加到Info.plist
文件中.如果您不添加此密钥,canOpenURL
将始终返回false
.比你需要添加你想要检查的方案.使用fb
为Facebook.
它应该是这样的:
其余的是斯威夫特:
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: [:])
}
Run Code Online (Sandbox Code Playgroud)
注意:将PROFILE_ID替换为目标.