Ios 使用Swift作为Facebook页面发布
我想将我的应用程序发布到我的Facebook商业页面。我可以将其发布到我的个人Facebook订阅源,也可以将其发布到我的商业页面,作为我的个人用户帐户发布。但是,我想把它发布到主业务页面feed,作为业务帐户 如Facebook文档所示: 这是我试过的。以下代码使用我的个人用户帐户发布到页面 我试图用pageAccessToken替换POST GraphRequest中的accessToken参数。。。但无法让它工作Ios 使用Swift作为Facebook页面发布,ios,swift,facebook,facebook-graph-api,Ios,Swift,Facebook,Facebook Graph Api,我想将我的应用程序发布到我的Facebook商业页面。我可以将其发布到我的个人Facebook订阅源,也可以将其发布到我的商业页面,作为我的个人用户帐户发布。但是,我想把它发布到主业务页面feed,作为业务帐户 如Facebook文档所示: 这是我试过的。以下代码使用我的个人用户帐户发布到页面 我试图用pageAccessToken替换POST GraphRequest中的accessToken参数。。。但无法让它工作 var pageAccessToken : GraphResponse?
var pageAccessToken : GraphResponse?
func getPageAccessToken() {
let connection = GraphRequestConnection()
connection.add(GraphRequest(graphPath: "/\(pageID)?fields=access_token")) { httpResponse, result in
switch result {
case .success(let response):
print("Graph Request Success: \(response)")
self.pageAccessToken = response
case .failed(let error):
print("Graph Request Fail: \(error)")
}
}
connection.start()
}
func requestPublishPermissions() {
let loginManager = LoginManager()
loginManager.logIn(publishPermissions: [ .managePages, .publishPages], viewController: self) { loginResult in
switch loginResult {
case .failed(let error):
print(error)
case .cancelled:
print("User cancelled login.")
case .success(let grantedPermissions, let declinedPermissions, let accessToken):
print("grantedPermissions = \(grantedPermissions) \n" +
"declinedPermissions = \(declinedPermissions) \n" +
"accessToken = \(accessToken)")
}
}
}
func postMessage() {
let requestPage : GraphRequest = GraphRequest(graphPath: "\(pageID)/feed", parameters: ["message" : "Hello Page!"], accessToken: AccessToken.current, httpMethod: .POST, apiVersion: .defaultVersion)
requestPage.start({ (connection, result) -> Void in
print("RESULT = \(result)")
})
}
谢谢你给我的建议和建议 我终于自己把它修好了。我将为那些试图做同样事情的人分享答案。 要在Facebook上的页面上发布简单的文字信息:
let pageID = {Get Your Page ID On Facebook}
var pageAccessToken : AccessToken?
func requestPublishPermissions() {
let loginManager = LoginManager()
loginManager.logIn(publishPermissions: [ .managePages, .publishPages], viewController: self) { loginResult in
switch loginResult {
case .failed(let error):
print(error)
case .cancelled:
print("User cancelled login.")
case .success(let grantedPermissions, let declinedPermissions, let accessToken):
print("grantedPermissions = \(grantedPermissions) \n" +
"declinedPermissions = \(declinedPermissions) \n" +
"accessToken = \(accessToken)")
}
}
}
func getPageAccessToken() {
let connection = GraphRequestConnection()
connection.add(GraphRequest(graphPath: "/\(pageID)?fields=access_token")) { httpResponse, result in
switch result {
case .success(let response):
print("Graph Request Success: \(response)")
self.pageAccessToken = AccessToken.init(authenticationToken: response.dictionaryValue?["access_token"] as! String)
case .failed(let error):
print("Graph Request Fail: \(error)")
}
}
connection.start()
}
func postMessage() {
let requestPage : GraphRequest = GraphRequest(graphPath: "\(pageID)/feed", parameters: ["message" : "Hello Page!"], accessToken: self.pageAccessToken, httpMethod: .POST, apiVersion: .defaultVersion)
requestPage.start({ (connection, result) -> Void in
print("RESULT = \(result)")
})
}
swift 5更新
let pageID = "yourFBPage"
var pageAccessToken : String?
func getPageAccessToken() {
let connection = GraphRequestConnection()
connection.add(GraphRequest(graphPath: "\(pageID)", parameters: ["fields": "access_token"])) { httpResponse, result,error in
if let error = error {
print(error.localizedDescription)
} else {
let info = result as! [String : AnyObject]
if info["access_token"] as? String != nil {
self.pageAccessToken = info["access_token"] as? String
}
//print(result)
self.postMessage()
}
}
connection.start()
}
func postMessage() {
let requestPage : GraphRequest = GraphRequest(graphPath: "\(pageID)/feed", parameters: ["message" : "Hello Page!"], tokenString: self.pageAccessToken, version: nil , httpMethod: .post )
requestPage.start(completionHandler: { (connection, result, error) -> Void in
if let error = error {
print(error.localizedDescription)
} else {
//print("RESULT = \(result)")
}
})
}