Swift Facebook集成登录回调问题
我正在尝试为我的swift3
应用程序集成Facebook login
。Swift Facebook集成登录回调问题
我在阅读本文档Facebook SDK for Swift。
安装后与pod
pod 'FacebookLogin'
pod 'FacebookShare'
而且在Linked framework and libraries
添加它们,Facebook登录工作作为显示Safari窗口的例子与Facebook登录和重定向相同的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
。
我在做什么错了?
下可能会导致访问令牌是零
您没有设置
info.plist
适当的:你必须有NSAppTransportSecurity
字典下设置为YES
用钥匙NSAllowsArbitraryLoads
一个布尔值-
您的AppDelegate文件中的Facebook SDK未在
didFinishLaunchingWithOptions
中正确初始化:您必须拨打此电话:FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
您拥有的SDK版本不是最新的。据报道,有些版本有漏洞在这一领域,以便更新,如果前2点覆盖你
为了回答您的其他问题,Facebook的SDK有login
方法与闭合参数如下SDK可能会解决你的问题
let manager = FBSDKLoginManager()
manager.logIn(withReadPermissions: ["public_profile"], from: self, handler: { (result, error) in
if error != nil {
// handle error
}
// login successful
})
注:我公司提供的代码使用pod 'FBSDKLoginKit'
和pod 'FBSDKShareKit'
,所以有可能是轻微的语法差异,但最终他们的工作方式相同。
编辑
我只注意到你正在使用Facebook的LoginButton
。在这种情况下,请参阅文档this以了解更多信息。主要是,您可以执行以下操作:
确保您符合FBSDKLoginButtonDelegate
并执行didCompleteWithResult
方法,该方法包含登录操作的结果。我链接的页面包含您可能需要的方法参数和其他详细信息。