2016-10-13 28 views
0

我从我的podfile使用荚:
PODS:
- 螺栓(1.8.4):
- 螺栓/ AppLinks( = 1.8.4)
- 螺栓/任务(= 1.8.4)
- 螺栓/ AppLinks(1.8.4):
- 螺栓/任务
- 螺栓/任务(1.8.4)
- FacebookCore (0.2.0):
- 螺栓(〜> 1.8)
- FBSDKCoreKit(〜> 4.15)
- FacebookLogin(0.2.0):
- 螺栓(〜> 1.8)
- FacebookCore(〜> 0.2)
- FBSDKCoreKit(〜> 4.15)
- FBSDKLoginKit(〜> 4.15)
- FBSDKCoreKit(4.16.0):
- 螺栓(〜> 1.7)
- FBSDKLoginKit(4.16.1):
- FBSDKCoreKitFacebook的登录文档使用(雨燕3.0 FacebookLogin 0.2.0)的WebView不打烊

我LoginViewController.swift代码:

import FacebookLogin 
class LoginViewController: UIViewController, LoginButtonDelegate { 
/*! 
@abstract Sent to the delegate when the button was used to login. 
@param loginButton the sender 
@param result The results of the login 
@param error The error (if any) from the login 
*/ 


override func viewDidLoad() { 
    super.viewDidLoad() 
    let loginButton = LoginButton(readPermissions: [ .publicProfile ]) 
    loginButton.center = view.center 
    loginButton.delegate = self; 
    view.addSubview(loginButton) 

} 

/** 
Called when the button was used to login and the process finished. 

- parameter loginButton: Button that was used to login. 
- parameter result:  The result of the login. 
*/ 
public func loginButtonDidCompleteLogin(_ loginButton: FacebookLogin.LoginButton, result: FacebookLogin.LoginResult){ 
    print("hello!") 
} 

/** 
Called when the button was used to logout. 

- parameter loginButton: Button that was used to logout. 
*/ 
public func loginButtonDidLogOut(_ loginButton: FacebookLogin.LoginButton){ 
    print("goodbye") 
} 

我修改AppDelegate.swift代码:

public func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool { 
    // Override point for customization after application launch. 
    return SDKApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions) 
} 

func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool { 
    return SDKApplicationDelegate.shared.application(application, open: url, options: [:]) 
} 

语境:
我下载的一切,带豆荚,并通过xcode的提示所有代码转换为SWIFT 3.0,所以我这样做了。我遵循本指南开始登录:https://developers.facebook.com/docs/swift 如果我在我的应用程序委托中没有运行第二个功能,我不得不在登录后弹出的web视图中按“完成”,然后收到响应“你好“,如果我在那个时候设置了一个断点,我发现我的登录被认为是取消了。另外,我初始化的facebook按钮仍然会提示我登录,所以它肯定无法工作。此外,我也得到这个错误:

-canOpenURL: failed for URL: "fbauth2:/" - error: "The operation couldn’t be completed. (OSStatus error -10814.)"

然而,如果我离开该方法,它会关闭,但委托永远不会被调用。另外,按钮进入提示我登录

我的Info.plist:

<key>CFBundleURLTypes</key> 
    <array> 
     <dict> 
      <key>CFBundleURLSchemes</key> 
      <array> 
       <string>fbMYID</string> 
      </array> 
     </dict> 
    </array> 
    <key>FacebookAppID</key> 
    <string>MYID</string> 
    <key>FacebookDisplayName</key> 
    <string>MYAPPNAME</string> 
    <key>LSApplicationQueriesSchemes</key> 
    <array> 
     <string>fbapi</string> 
     <string>fb-messenger-api</string> 
     <string>fbauth2</string> 
     <string>fbshareextension</string> 
    </array> 

额外的信息:
我是新来的迅速,但是我可以告诉大家,我需要我的方法拿出来让它工作,但我不确定如何解决这个问题。我没有任何名为FBSDKApplicationDelegate的东西(从我浏览过的其他类似问题中查看),因为我使用的是来自此处的新的swift SDK:https://developers.facebook.com/docs/swift。我猜测,鉴于当前版本的swift,登录文档已过时,或者我错过了指向某些先决条件的链接。如果您对我的问题有任何解决方案,请告诉我。我的info.plist应该全部设置,否则我会尝试登录时发生错误。我可以到达屏幕,它表示您已经授予MYAPP权限。然后我继续按OK,然后如果我的应用程序委托中有openURL方法,它会关闭,或者它保持空白。我强烈怀疑它与我在调用SDKApplicationDelegate时从open方法留下空白字典的选项有关。由于

回答

1

所以问题是与我的钥匙串共享。只要我去mytarget>能力>钥匙串共享,然后启用它,它的工作。

0

首先从developer.facebook.com创建应用并添加您还APPID在plist中

比一个按钮添加到您的故事板和该代码添加到您的应用程序的登录

let loginManager = LoginManager() 
    loginManager.logIn([.publicProfile], viewController: self) { loginResult in 
     switch loginResult 
     { 
     case .failed(let error): 
      print(error) 
     case .cancelled: 
      print("User cancelled login.") 

     case .success(let grantedPermissions, let declinedPermissions, let accessToken): 
      print("granted \(grantedPermissions.contains("email"))") 
      print("Logged in user! \(loginResult)") 
      print("accesstoken - \(accessToken)") 
      print("user ID - \(accessToken.userId)") 
      } 
      } 

新增Facebook通过Pod文件,帮助很多

+0

检查我更新的问题,我添加了我的plist的一部分。你的意思是吗?它已经是这样了。 – user2977578

+0

对不起,我误解了,但我仍然面临这个解决方案的例外。如果我对第一个appID进行了更改,那么我会得到一个异常,如果我将fbauth2添加到两个Facebook应用程序ID中,那么我会得到另一个异常,如果仅将它添加到最后一个ID,我会得到一个异常。 – user2977578

+0

通过Facebook你真的想做什么喜欢Facebook登录&注销?还是?你真正想要做什么告诉我? – iSonask