Swift 通过 FacebookUID 打开 Facebook 个人资料
Swift Open Facebook Profile by FacebookUID
我正在尝试使用他们的 Facebook UID 在 Swift 中打开用户的 Facebook 个人资料。在模拟器中,它可以运行并打开配置文件的网络版本并且运行良好,但是在我的实际设备上,它打开了 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)
}
我做错了什么?
提前致谢!
编辑
我注意到,如果用户删除或未在其 phone 上安装 Facebook 应用程序,它将通过 Safari 正确打开配置文件,这就是它在模拟器上运行的原因,但没有在我的设备上。但是,我还注意到,如果我尝试 public 个人资料,如 fb://profile/4
(这是马克扎克伯格的个人资料),我可以让它在 Facebook 应用程序中工作。
您好,基于 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.Yes 有些人发现了相同的 error.Page 机器人。
可能有隐私设置->你想要 link 之外的搜索引擎到你的个人资料吗->否。限制搜索。
从 facebook 获取用户 ID 技巧:
1)右键单击人物或页面的个人资料照片,select 属性和 ID 将包含在页面中
2) 在移动浏览器中,如果你打开照片,就会有 id 例如
" fbid = *** & pid = 1000....89 " 所以 1000....89 将是您的用户 ID
这是另一个适用于 iOS 10
和 Swift 3
的解决方案。
首先,您应该将 LSApplicationQueriesSchemes
键添加到 Info.plist
文件。如果不添加此键,canOpenURL
将始终 return false
。比您需要添加要检查的方案。对 Facebook 使用 fb
。
它应该是这样的:
剩下的是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_ID 替换为您的目标。
感谢 vien vu。
从 iOS 9 < 上面,您必须将 url 列入白名单,您的应用程序将使用 Info.plist 中的 LSApplicationQueriesSchemes 键调用它们。所以将此代码添加到您的 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>
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>
截至 2020 年 8 月 30 日,我能够使用此 URL 方案 fb://profile?id={userid/username/pageid}
打开 Facebook 用户的个人资料/页面。
例如:fb://profile?id=4
或 fb://profile?id=zuck
警告:请自行承担使用风险,因为这在 Facebook 开发人员文档中没有记录。此 URL 计划将来可能会在没有任何警告和指示的情况下被 Facebook 应用程序删除。
我正在尝试使用他们的 Facebook UID 在 Swift 中打开用户的 Facebook 个人资料。在模拟器中,它可以运行并打开配置文件的网络版本并且运行良好,但是在我的实际设备上,它打开了 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)
}
我做错了什么?
提前致谢!
编辑
我注意到,如果用户删除或未在其 phone 上安装 Facebook 应用程序,它将通过 Safari 正确打开配置文件,这就是它在模拟器上运行的原因,但没有在我的设备上。但是,我还注意到,如果我尝试 public 个人资料,如 fb://profile/4
(这是马克扎克伯格的个人资料),我可以让它在 Facebook 应用程序中工作。
您好,基于 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.Yes 有些人发现了相同的 error.Page 机器人。
可能有隐私设置->你想要 link 之外的搜索引擎到你的个人资料吗->否。限制搜索。
从 facebook 获取用户 ID 技巧:
1)右键单击人物或页面的个人资料照片,select 属性和 ID 将包含在页面中
2) 在移动浏览器中,如果你打开照片,就会有 id 例如 " fbid = *** & pid = 1000....89 " 所以 1000....89 将是您的用户 ID
这是另一个适用于 iOS 10
和 Swift 3
的解决方案。
首先,您应该将 LSApplicationQueriesSchemes
键添加到 Info.plist
文件。如果不添加此键,canOpenURL
将始终 return false
。比您需要添加要检查的方案。对 Facebook 使用 fb
。
它应该是这样的:
剩下的是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_ID 替换为您的目标。
感谢 vien vu。 从 iOS 9 < 上面,您必须将 url 列入白名单,您的应用程序将使用 Info.plist 中的 LSApplicationQueriesSchemes 键调用它们。所以将此代码添加到您的 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>
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>
截至 2020 年 8 月 30 日,我能够使用此 URL 方案 fb://profile?id={userid/username/pageid}
打开 Facebook 用户的个人资料/页面。
例如:fb://profile?id=4
或 fb://profile?id=zuck
警告:请自行承担使用风险,因为这在 Facebook 开发人员文档中没有记录。此 URL 计划将来可能会在没有任何警告和指示的情况下被 Facebook 应用程序删除。