我正在尝试存储登录的Facebook用户的Facebook用户名(例如www.facebook.com/ james.dean01 ),以便通过Messenger(类似于How to open Facebook Messenger and direct to someone?)与人们建立联系。我正在配置一个按钮,该按钮会将用户直接发送到某人的Messenger聊天,但要这样做,我需要他们的用户名/ facebook URL。我正在尝试使用“链接”属性(Facebook图形API:https://developers.facebook.com/docs/graph-api/reference/user)获取指向用户个人资料的链接,该链接可用于此目的,只有链接属性(已打印)返回nil。我不确定自己在做什么错。目的是每次用户登录数据时都会读取一次并更新数据库。下面是代码。
任何帮助将不胜感激!
import FacebookCore
class FacebookService {
static let instance = FacebookService()
let params = ["fields": "email, first_name, last_name, link, picture, name"]
func recordUserData() {
let graphRequest = GraphRequest(graphPath: "me", parameters: params)
graphRequest.start {
(urlResponse, requestResult) in
switch requestResult {
case .failed(let error):
print("error in graph request:", error)
break
case .success(let graphResponse):
if let responseDictionary = graphResponse.dictionaryValue {
print(responseDictionary)
let link = responseDictionary["link"] as? String
let email = responseDictionary["email"] as? String
let fbId = responseDictionary["id"] as? String
let name = responseDictionary["name"] as? String
let picture = responseDictionary["picture"] as? NSDictionary
let data = picture!["data"] as? NSDictionary
let url = data!["url"] as? String
print("Link: \(link)")
print(url)
}
}
}
}
}
答案 0 :(得分:0)
您需要请求必要的许可,https://developers.facebook.com/docs/facebook-login/permissions#reference-user_link
此权限的使用需要经过Facebook的审查,然后才能在实时应用中使用。
但是不确定您是否会通过审查得到这一点,因为您要做的实际上是它说的是不允许的用例:
试图以编程方式确定某人的Facebook用户名或规范的用户ID。
因此,不能保证Facebook会批准这一点;您只能尝试将其提交以进行审核,并查看收到的反馈。