我正在尝试将 Facebook login
集成到我的 swift3
应用程序中 .
我正在阅读本文档Facebook SDK for Swift .
用 pod
安装后
pod 'FacebookLogin'
pod 'FacebookShare'
并将它们添加到 Linked framework and libraries
中,facebook登录正如显示一个Safari登录的示例,并重定向相同的ViewController .
但是,我有两个具体问题 . 第一个,我需要在facebook登录重定向(成功或错误)后添加回调并分配当前令牌 .
我目前的代码是:
import FacebookLogin
import FacebookCore
class LoginViewController: UIViewController {
override func viewDidLoad(){
super.viewDidLoad()
self.navigationItem.setHidesBackButton(true, animated:true);
var fbtoken = AccessToken.current
LoginManager().logOut()
if(fbtoken != nil){
let connection = GraphRequestConnection()
connection.add(GraphRequest(graphPath: "/me")) { httpResponse, result in
switch result {
case .success(let response):
print("Graph Request Succeeded: \(response)")
case .failed(let error):
print("Graph Request Failed: \(error)")
}
}
connection.start()
}
let loginButton = LoginButton(readPermissions: [ .publicProfile ])
let screenSize:CGRect = UIScreen.main.bounds
let screenHeight = screenSize.height
let newCenterY = screenHeight - loginButton.frame.height - 10
let newCenter = CGPoint(x: view.center.x, y: newCenterY)
loginButton.center = newCenter
view.addSubview(loginButton)
}
fbtoken
变量始终为 nil
,读取Login Behavior documentation无法分配 callback
.
我做错了什么?
1 回答
以下可能导致访问令牌为零
你没有正确设置
info.plist
:你必须将一个布尔值设置为YES
,并使用NSAppTransportSecurity
字典下的NSAllowsArbitraryLoads
键Facebook SDK未在AppDelegate文件的
didFinishLaunchingWithOptions
中正确初始化:您必须进行此调用:要回答您的其他问题,Facebook SDK有一个带有闭包参数的
login
方法,如下所示注意:我提供的代码使用
pod 'FBSDKLoginKit'
和pod 'FBSDKShareKit'
,因此可能存在轻微的语法差异,但最终它们的工作方式相同 .EDIT
我刚注意到你're using Facebook' s
LoginButton
. 在这种情况下,请参阅文档的this页面以获取更多信息 . 主要是,这是你可以做的:确保符合
FBSDKLoginButtonDelegate
并实现didCompleteWithResult
方法,该方法包含登录操作的结果 . 我链接的页面包含方法的参数和您可能需要的其他详细信息 .