2015-06-24 99 views
3

我的應用程序的功能是:從Facebook頁面獲取帖子並在應用程序中顯示它。 我搜索了,我發現我應該使用Facebook GraphAPI: https://developers.facebook.com/docs/graph-api/using-graph-api/v2.3#reading 我遵循上一個鏈接,但我得到錯誤: 「訪問令牌是需要請求此資源。」 我有頁面的訪問令牌,但我真的不知道如何在我的請求中分配它。 請幫忙嗎? 非常感謝!如何使用GraphAPI在swift中獲取facebook頁面的帖子

+0

將訪問令牌作爲參數傳遞。 –

+0

謝謝 但如何? – Rawan

+0

檢查我的答案。 –

回答

4

1.使用Facebook SDK。

登錄博客BUTTON

@IBAction func click_Facebook(sender: AnyObject) 
    { 
     let loginView : FBSDKLoginManager = FBSDKLoginManager() 

     loginView.loginBehavior = FBSDKLoginBehavior.Browser 

     loginView.logInWithReadPermissions(["public_profile","user_friends","user_photos","user_location","user_education_history","user_birthday","user_posts"], handler: { (result : FBSDKLoginManagerLoginResult!, error : NSError!) -> Void in 

       if ((error) != nil) 
       { 
        // Process error 

        self.alertWithMessaage(error.localizedDescription) 
       } 
       else if result.isCancelled { 
        // Handle cancellations 
       } 
       else { 

        self.returnUserData() 
       } 

     }) 

    } 

登錄調用下面的函數後。

var Requset : FBSDKGraphRequest 

    println("\(FBSDKAccessToken.currentAccessToken())") 

    var acessToken = String(format:"%@", FBSDKAccessToken.currentAccessToken().tokenString) as String 

    println("\(acessToken)") 

    var parameters1 = ["access_token":FBSDKAccessToken.currentAccessToken().tokenString] 


    Requset = FBSDKGraphRequest(graphPath:"me/posts", parameters:parameters1, HTTPMethod:"GET") 

    Requset.startWithCompletionHandler({ (connection, result, error) -> Void in 

     MBProgressHUD.hideHUDForView(appDelegate.window, animated: true) 

     if ((error) != nil) 
     { 
      println("Error: \(error)") 
     } 
     else 
     { 
      println("fetched user: \(result)") 

      var dataDict: AnyObject = result!.objectForKey("data")! 

     } 
    }) 
} 

2.使用默認的Facebook應用程序。

//獲取訪問令牌

var _accountStore: ACAccountStore = ACAccountStore() 

    var accountType : ACAccountType = _accountStore.accountTypeWithAccountTypeIdentifier(ACAccountTypeIdentifierFacebook)! 

    var accounts : NSArray = _accountStore.accountsWithAccountType(accountType)! 

    var facebookAccount1: ACAccount = accounts.lastObject! as ACAccount 

    println("== \(facebookAccount1.credential.oauthToken)") 

//通行證的accessToken對參數

var acessToken = String(format:"%@", facebookAccount1.credential.oauthToken) as String 

    var parameters = ["access_token":acessToken] as NSDictionary 

// SLRequset

var imageURL : NSURL = NSURL(string: "Your graph URL")! 

    println("=== TOKEN : \(LoginService().currentAccount?.credential.oauthToken)") 

    var Requset = SLRequest(forServiceType: SLServiceTypeFacebook, requestMethod: SLRequestMethod.GET, URL: imageURL, parameters: parameters) 

    Requset.account = account 

    Requset.performRequestWithHandler { (responseData : NSData!, urlResponse : NSHTTPURLResponse!, error : NSError!) -> Void in 


     if (error != nil) 
     { 
      self.alertWithMessaage(error.localizedDescription) 
     } 
     else{ 

      var datastring = NSString(data: responseData, encoding: NSUTF8StringEncoding) 

      println("== \(datastring)") 

      var error:NSError? = nil 

      var UserDict = NSJSONSerialization.JSONObjectWithData(responseData, options:nil, error: &error) as? NSDictionary 


     } 

    } 
+0

嘿 謝謝你sooo糊爲你的答案, 但我有訪問令牌的問題,你能解釋你如何得到它? 我從https://developers.facebook.com/tools/explorer 得到它,但過了一段時間這個訪問令牌不起作用,錯誤是: (到期時間已結束) 所以我必須續約它。 你能告訴我如何得到它嗎? – Rawan

+0

使用Facebook登錄表單您的設置在Iphone中。 –

+0

如果用戶沒有從設置登錄,會發生什麼情況? 和另一個問題: 我應用ur代碼,但在運行時,我在「facebookAccount1」中得到一個異常。錯誤是: 意外地發現零,而解包一個可選值 爲什麼? – Rawan

相關問題