我目前正在尝试使用4.0版本的SDK实现Facebook登录,3.+版本也会出现这种情况。当我调用logInWithReadPermissions (4.0版本)或openActiveSessionWithReadPermissions (3.+版本)时。在用户可以选择之前,立即使用isCancelled (4.0版本)和3.+ (3.+版本)调用闭包/块(取消或确定)。我想这可能是在我的plist设置的URL方案的一个问题,但我已经检查了一遍又一遍,一切似乎都是正确的。只是想知道是否有人对解决这个问题有任何想法。我的捆绑ID是正确的,单信号是打开的,本机应用程序是启用的,在Facebook开发控制台。参见下面的一些示例代码和配置(4.0版本)。
登录呼叫:

AppDelegate:

薄片:

发布于 2015-03-30 00:12:49
我遇到了一些问题,但我找到了解决办法。您可以将登录管理器的登录行为设置为使用电话上的Facebook详细信息。默认的行为是FBSDKLoginBehaviorSystemNative,它首先尝试使用Facebook应用程序,然后如果它不存在,则使用web模式。
您可以将登录行为设置为FBSDKLoginBehaviorSystemAccount.,而不是以这种方式传递似乎不起作用的urls。
长话短说,试着:
let fbLoginManager = FBSDKLoginManager();
fbLoginManager.loginBehavior = FBSDKLoginBehaviorSystemAccount;
// call login method of choice here发布于 2017-01-10 22:55:18
使用Facebook版本4,我只需将其添加到iOS 10 & Swift 3上的应用程序委托中,就可以使身份验证工作。在此之前,我也只取消了登录。
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
return SDKApplicationDelegate.shared.application(app, open: url, options: options)
}发布于 2017-01-17 13:18:08
我有同样的问题,登录方法总是返回加腌制的,然后在info.plist中添加以下内容
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>akamaihd.net</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
<key>facebook.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
<key>fbcdn.net</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
</dict>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>在AppDelegate中,更新AppDelegate方法并添加新方法,如下所示
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
return SDKApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions)
}
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool
{
return SDKApplicationDelegate.shared.application(app, open: url, options: options)
} 登录方法如下:
@objc func loginButtonClicked() {
let loginManager = LoginManager()
loginManager.loginBehavior = .systemAccount
loginManager.logIn([ .publicProfile,.userFriends,.email ], 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("Logged in!")
//Do further code...
}
}
}它适用于我在SWIFT3.0和SDK4.17.0中工作,我希望它能为您工作,谢谢。
https://stackoverflow.com/questions/29321402
复制相似问题