我试图使用他们的Facebook UID在Swift中打开用户的Facebook个人资料。在模拟器中,它工作并打开配置文件的Web版本并且工作正常,但是在我的实际设备上,它打开了Facebook本机应用程序并给了我一个" Page not Found"错误。
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正确打开配置文件,这就是它在模拟器上运行的原因,但没有& #39;在我的设备上。但是,如果我尝试像fb://profile/4
这样的公开个人资料(这是Mark Zuckerburg的简介),我也注意到我可以在Facebook应用中使用它。
答案 0 :(得分:9)
您好基于documentation Facebook ID是应用范围的用户ID,因此您可以使用
fb://profile?app_scoped_user_id=%@
但请查看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
答案 1 :(得分:6)
这是另一个适用于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: [:])
}
注意:将PROFILE_ID替换为目标。
答案 2 :(得分:2)
感谢vien vu。 来自iOS 9<在上面,您必须使用Info.plist中的LSApplicationQueriesSchemes键将您的应用程序将调用的URL列入白名单。因此,请将此代码添加到plist文件中:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fb</string>
<string>fbapi</string>
<string>fbauth2</string>
<string>fbshareextension</string>
<string>fb-messenger-api</string>
<string>twitter</string>
<string>whatsapp</string>
<string>wechat</string>
<string>line</string>
<string>instagram</string>
<string>kakaotalk</string>
<string>mqq</string>
<string>vk</string>
<string>comgooglemaps</string>
</array>
答案 3 :(得分:1)
Swift 2.3
func goFacebook() {
let profileID = "" //Here put profile id Example:'62260589592'
let facebookURL = NSURL(string: "fb://profile/\(profileID)")!
if UIApplication.sharedApplication().canOpenURL(facebookURL) {
UIApplication.sharedApplication().openURL(facebookURL)
} else {
UIApplication.sharedApplication().openURL(NSURL(string: "https://www.facebook.com/PageName")!)
}
}
注意:如果您无法找到Facebook个人资料ID,您可以使用以下网站进行操作(https://findmyfbid.com/)
在info.plist中设置
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fb</string>
<string>fbapi</string>
<string>fbauth2</string>
<string>fbshareextension</string>
<string>fb-messenger-api</string>
</array>
答案 4 :(得分:0)
截至2020年8月30日,我能够使用此URL方案fb://profile?id={userid/username/pageid}
打开一个Facebook用户的个人资料/页面。
例如:fb://profile?id=4
或fb://profile?id=zuck
警告:由于使用此风险自负,因此Facebook开发人员文档中未记录。将来,Facebook应用程序可能会删除此URL方案,而不会发出任何警告和指示。