我已将最新的Facebook SDK添加到为XCode 7.1
编写的iOS 9.1
项目中。不幸的是,我所知道的是 Swift ,而不是 Objective C 。 Facebook's developer site documentation仅包含目标C 中的文档。谷歌上的每一次搜索都会显示过于陈旧的文档,因为过去6个月内事情发生了很大变化。所以我有点失落。
我用plist文件做了所有简单的事情。
我能够使用:
import FBSDKCoreKit
import FBSDKLoginKit
我还补充说:
return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)
和
return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
到我的AppDelegate.swift
文件。这一切都有效并且构建成功。显然,我也添加了正确的框架。除此之外,我处于停滞状态,因为我不知道添加登录按钮的语法,用于捕获我认为会返回带有令牌的json字符串以及我可以用来存储在用户帐户中的其他配置文件信息等等。
答案 0 :(得分:8)
你走在正确的轨道上。
Have you set up your pList yet?
您必须添加到VC,添加登录按钮,处理委托,然后处理FB信息。像(但不完全)这样的东西:
class yourVC: UIViewController, FBSDKLoginButtonDelegate, UITextFieldDelegate
{
var loginView : FBSDKLoginButton = FBSDKLoginButton()
viewDidLoad() {
loginView.frame = CGRectMake(20, 20, theWidth-40, 40)
self.view.addSubview(loginView)
loginView.readPermissions = ["public_profile", "email", "user_friends","user_birthday"]
loginView.delegate = self
}
func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) {
if ((error) != nil)
{
//handle error
} else {
returnUserData()
}
}
func returnUserData()
{
let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields":"id,interested_in,gender,birthday,email,age_range,name,picture.width(480).height(480)"])
graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in
if ((error) != nil)
{
// Process error
print("Error: \(error)")
}
else
{
print("fetched user: \(result)")
let id : NSString = result.valueForKey("id") as! String
print("User ID is: \(id)")
//etc...
}
})
}
你必须使用returnData()
部分才能正确使用它,但是这段代码可以让你获得90%的胜利。
我已经包含了广泛的权限(用户年龄,感兴趣等),但您必须自己配置它们。老实说,这部分(困难的部分)与它的对象C对应物非常相似,这更好地记录了。只需下载一些可以工作的项目,并尝试将它们拼凑成适合您喜欢的内容。
很难让它全部正常工作,但要试一试,并坚持下去!
答案 1 :(得分:5)
如果您想通过点击自定义按钮从Facebook登录,这将有助于:
@IBAction func onClickFacebookButton(sender: UIButton){
let login = FBSDKLoginManager()
login.loginBehavior = FBSDKLoginBehavior.SystemAccount
login.logInWithReadPermissions(["public_profile", "email"], fromViewController: self, handler: {(result, error) in
if error != nil {
print("Error : \(error.description)")
}
else if result.isCancelled {
}
else {
FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "first_name, last_name, picture.type(large), email, name, id, gender"]).startWithCompletionHandler({(connection, result, error) -> Void in
if error != nil{
print("Error : \(error.description)")
}else{
print("userInfo is \(result))")
}
})
}
})
}