由FacebookUID开发Facebook的个人资料

时间:2016-05-13 01:24:41

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

我试图使用他们的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)
}

enter image description here

我做错了什么?

提前致谢!

修改

我注意到如果用户删除或没有在手机上安装Facebook应用,它会通过Safari正确打开配置文件,这就是它在模拟器上运行的原因,但没有& #39;在我的设备上。但是,如果我尝试像fb://profile/4这样的公开个人资料(这是Mark Zuckerburg的简介),我也注意到我可以在Facebook应用中使用它。

enter image description here

5 个答案:

答案 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。

看起来应该是这样的:

enter image description here

其余的是斯威夫特:

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=4fb://profile?id=zuck

警告:由于使用此风险自负,因此Facebook开发人员文档中未记录。将来,Facebook应用程序可能会删除此URL方案,而不会发出任何警告和指示。