gpt4 book ai didi

ios - 为什么 FBLogin 在模拟器中不工作? - 它留在 Safari 中?

转载 作者:搜寻专家 更新时间:2023-11-01 06:39:38 24 4
gpt4 key购买 nike

我正在使用 xcode 7.3 和最新版本的 fb sdk。我按照 Fb 文档做了所有方法声明。但是现在当我用 facebook 按钮按下登录时。它重定向到 safari 页面并询问你是否想要允许。我给了是。之后它仍然在 safari 页面。这是 safari 页面左上角的一个“完成”按钮知道。如果我按下那个完成按钮,它只会进入我的主屏幕。我不知道为什么?

我尝试重置我的模拟器,并在 info.plist 中添加所有需要的东西。但它不起作用。我有 fb、google 以及两个登录按钮。但是这个 fb 不起作用。

任何解决方案都会很棒

enter image description here

enter image description here

enter image description here

在我按下完成按钮后,它只允许我进入应用程序内部。(主屏幕)。

我在 appdelegate 中的代码:

 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
}


func application(app: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {

// let GoogleHandler = GIDSignIn.sharedInstance().handleURL(url, sourceApplication: sourceApplication, annotation: annotation)

let FacebookHandler = FBSDKApplicationDelegate.sharedInstance().application(app, openURL: url, sourceApplication: sourceApplication, annotation: annotation)

return FacebookHandler
}

我在 View Controller 中的代码:

import UIKit
import FBSDKCoreKit
import FBSDKLoginKit

class LoginViewController: UIViewController, UIAlertViewDelegate, FBSDKLoginButtonDelegate
{
override func viewDidLoad()
{
super.viewDidLoad()

self.navigationController?.navigationBar.barTintColor = UIColor.redColor()

self.navigationController?.navigationBar.tintColor = UIColor.whiteColor()

if (FBSDKAccessToken.currentAccessToken() != nil)
{
// User is already logged in, do work such as go to next view controller.
print("User Already Logged In")
}
else
{
print("User Not Logged In")
}

fbLoginBtn.readPermissions = ["public_profile", "email", "user_friends"]
fbLoginBtn.center = self.view.center
fbLoginBtn.delegate = self
self.view.addSubview(fbLoginBtn)
}

////// ------- Fb login delegate methods ------ //////

func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!)
{
if error == nil
{
print("Login complete.")
dispatch_async(dispatch_get_main_queue())
{
let appdelegate:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate

_ = appdelegate.window!.rootViewController


let mainStoryBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)

let mainViewController = mainStoryBoard.instantiateViewControllerWithIdentifier("HomeViewController") as! HomeViewController

let leftViewController = mainStoryBoard.instantiateViewControllerWithIdentifier("MenuViewController") as! MenuViewController


let leftSideNav = UINavigationController(rootViewController: leftViewController)

let centerNav = UINavigationController(rootViewController: mainViewController)


let centerContainer:MMDrawerController = MMDrawerController(centerViewController: centerNav, leftDrawerViewController: leftSideNav)



centerContainer.openDrawerGestureModeMask = MMOpenDrawerGestureMode.PanningCenterView;

centerContainer.closeDrawerGestureModeMask = MMCloseDrawerGestureMode.PanningCenterView;

appdelegate.centerContainer = centerContainer

appdelegate.window!.rootViewController = appdelegate.centerContainer

appdelegate.window!.makeKeyAndVisible()
}

}
else
{
print(error.localizedDescription)
}
}
func loginButtonDidLogOut(loginButton: FBSDKLoginButton!)
{
print("User logged out...")
}

最佳答案

此代码适用于 XCode 7.3。当您从 Facebook 登录时,它会返回到您的 View Controller 上。

override func viewDidLoad() {
super.viewDidLoad()

// Login steps
if (FBSDKAccessToken.currentAccessToken() == nil)
{
// User is not already logged
print("Not logged")
}
else
{
// User is already logged
print("Logged")
}
}

// Facebook Delegate Methods
func loginButton(connection: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) {

if (error != nil)
{
print("Error")
}
else {
// If you ask for multiple permissions at once, you
// should check if specific permissions missing
if result.grantedPermissions.contains("email")
{
// Do work
}
print("User logged in")
}
}

func loginButtonDidLogOut(loginButton: FBSDKLoginButton!) {
print("User Logged Out")
}

关于ios - 为什么 FBLogin 在模拟器中不工作? - 它留在 Safari 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37157713/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com