取消 Facebook 登录不显示 (Swift)
Posted
技术标签:
【中文标题】取消 Facebook 登录不显示 (Swift)【英文标题】:Cancel Facebook login not displayed (Swift) 【发布时间】:2015-03-23 04:58:30 【问题描述】:我在我的游戏中加入了登录 Facebook 的选项,它运行良好,如下所示。但是,如果用户不想登录或创建新的 Facebook 帐户而只是想在 Facebook 上免费玩游戏,他们怎么能取消呢?
如果我点击上面的按钮,我会看到一个屏幕,要求我登录或创建一个新帐户。那里也没有取消的选项。
我在这个问题上找到了this answer,但作为一个直接开始使用 Swift 的新手,我不知道如何将答案移植到那里。
我将按钮加载到我的 GameViewController.swift 文件中,就像这样
override func viewDidLoad()
super.viewDidLoad()
self.authenticateLocalPlayer()
self.fbLoginView.delegate = self
self.fbLoginView.readPermissions = ["public_profile", "email", "user_friends"]
并且在我的 AppDelegate.swift 文件中有以下函数
class AppDelegate: UIResponder, UIApplicationDelegate
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
// Override point for customization after application launch.
FBLoginView.self
FBProfilePictureView.self
return true
func application(application: UIApplication, openURL url: NSURL, sourceApplication: NSString?, annotation: AnyObject) -> Bool
var wasHandled:Bool = FBAppCall.handleOpenURL(url, sourceApplication: sourceApplication)
return wasHandled
我应该在这里调整一些东西吗?什么?
【问题讨论】:
他们无法取消,他们需要注销。 如果他们没有 Facebook 帐户,他们如何退出? 【参考方案1】:这个帖子帮了我Swift Facebook Login
我将这里提到的这部分代码添加到我的 GameViewController.swift 文件中
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
// Whenever a person opens the app, check for a cached session
if FBSession.activeSession().state == FBSessionState.CreatedTokenLoaded
// If there's one, just open the session silently, without showing the user the login UI
FBSession.openActiveSessionWithReadPermissions(["public_profile"], allowLoginUI: false, completionHandler:
(session, state, error) -> Void in
self.sessionStateChanged(session, state: state, error: error)
)
return true
func sessionStateChanged(session : FBSession, state : FBSessionState, error : NSError?)
// If the session was opened successfully
if state == FBSessionState.Open
println("Session Opened")
// If the session closed
if state == FBSessionState.Closed
println("Closed")
与我之前的按钮不同,此代码显示了带有取消按钮的 Facebook 登录视图。
然后我像这样编辑了我的 handleError 委托函数
func loginView(loginView : FBLoginView!, handleError:NSError)
println("Error: \(handleError.localizedDescription)")
loginView.removeFromSuperview()
所以现在,当用户点击取消键时,整个 Facebook 登录操作都会消失。
【讨论】:
以上是关于取消 Facebook 登录不显示 (Swift)的主要内容,如果未能解决你的问题,请参考以下文章
如果用户取消登录,Swift ios facebook登录会使应用程序崩溃
Facebook Login 中的取消按钮使用 Swift 崩溃了吗?
取消 Google Play 游戏登录后 Facebook 登录崩溃(反之亦然)
使用 Facebook 应用程序时 Facebook 登录回调不起作用 - Swift