【问题标题】:Swift Open Facebook Profile by FacebookUID通过 FacebookUID Swift 打开 Facebook 个人资料
【发布时间】:2016-09-09 01:14:23
【问题描述】:

我正在尝试使用用户的 Facebook UID 在 Swift 中打开用户的 Facebook 个人资料。在模拟器中,它可以工作并打开配置文件的网络版本并且工作正常,但是在我的实际设备上,它会打开 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 正确打开个人资料,这就是它在模拟器上工作但在我的手机上没有的原因设备。但是,我也注意到,如果我尝试使用像 fb://profile/4 这样的公共个人资料(这是马克扎克伯格的个人资料),我可以让它在 Facebook 应用程序中工作。

【问题讨论】:

  • 嗯,很奇怪,我测试了你的代码,它在我的设备上运行良好
  • 您访问的 Facebook 个人资料是私密的吗?我在想,因为它还需要我登录网络版本才能查看个人资料,所以这可能是令牌的问题
  • @PenkeySuresh 还没有弄清楚这一点。你有没有在你的手机上安装 facebook 应用程序?我能够弄清楚为什么它在模拟器中而不是在我的实际设备上工作。似乎在安装 Facebook 应用程序时,它会给出该错误。如果没有安装,它只会在 Safari 中打开用户的个人资料
  • 我在 iPhone 5s 真机上试过。在设备上安装 facebook。尝试使用有/没有共同朋友的个人资料
  • 您是否有机会将示例项目推送到 GitHub 以便我查看?这不适用于我的设备或我在@PenkeySuresh 上尝试过的任何朋友设备

标签: ios swift facebook facebook-graph-api facebook-sdk-4.0


【解决方案1】:

您好,基于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 应用程序中都有打开的个人资料。是的,有些有相同的错误。找到了页面机器人。

可能有隐私设置->您是否希望搜索引擎外部链接到您的个人资料->否。限制搜索。

从 facebook Trick 获取用户 ID:

1)右键点击个人或页面的头像,选择属性,ID将包含在页面中

2)在手机浏览器中,如果您打开照片,则有 id 例如。 " fbid = *** & pid = 1000....89 " 所以 1000....89 将是您的用户 ID

【讨论】:

  • 谢谢。获取图像 ID(来自技巧 1)并使用它而不是我认为必须使用的名称对我有用。
【解决方案2】:

这是另一个适用于iOS 10Swift 3 的解决方案。

首先,您应该将LSApplicationQueriesSchemes 密钥添加到Info.plist 文件中。如果不添加此密钥,canOpenURL 将始终返回 false。比您需要添加要检查的方案。将 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_ID 替换为您的目标。

【讨论】:

  • 这对我有用,现在我可以打开 facebook 应用程序,但无法转到特定的 facebook 个人资料。
  • 同样的问题。
【解决方案3】:

感谢 vien vu。 从 iOS 9

 <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>

【讨论】:

    【解决方案4】:

    斯威夫特 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>
    

    【讨论】:

      【解决方案5】:

      截至 2020 年 8 月 30 日,我可以使用此 URL 方案 fb://profile?id={userid/username/pageid} 打开 facebook 用户的个人资料/页面。

      例如:fb://profile?id=4fb://profile?id=zuck

      警告:请自行承担使用风险,因为 Facebook 开发人员文档中没有记录。此 URL 方案将来可能会被 Facebook 应用删除,而不会发出任何警告和指示。

      【讨论】:

      • 这是正确答案
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-18
      • 2017-09-30
      • 2011-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多