Ear*_*son 18 facebook ios facebook-ios-sdk swift
我目前正在尝试使用4.0版本的SDK实现Facebook登录,这也发生在3. +版本.当我调用logInWithReadPermissions(4.0版本)或openActiveSessionWithReadPermissions(3. +版本)时.在用户可以进行选择(取消或确定)之前,使用isCancelled(4.0版本)和ClosedFailedLogin(3. +版本)立即调用闭包/块.我认为这可能是我的plist设置中的URL Scheme的一个问题,但我一遍又一遍地检查它,一切似乎都是正确的.只是想知道是否有人可能有任何解决这个问题的想法.我的Bundle ID是正确的,在Facebook开发控制台中启用了单点登录,启用了本机应用程序.请参阅下面的示例代码和配置(4.0版本).
登录电话:

AppDelegate中:

plist中:

Phi*_*tto 14
使用Facebook SDK版本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)
}
Run Code Online (Sandbox Code Playgroud)
小智 7
我有一些问题,但我找到了一个解决方法.您可以设置登录管理器的登录行为以使用手机上的Facebook详细信息.默认行为是FBSDKLoginBehaviorSystemNative,它首先尝试使用Facebook应用程序,如果不存在,则使用Web模式.
而不是这样做并传递似乎不起作用的网址,您可以将登录行为设置为FBSDKLoginBehaviorSystemAccount.
长话短说,试试:
let fbLoginManager = FBSDKLoginManager();
fbLoginManager.loginBehavior = FBSDKLoginBehaviorSystemAccount;
// call login method of choice here
Run Code Online (Sandbox Code Playgroud)
我有相同的问题登录方法总是返回canacelled然后我在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>
Run Code Online (Sandbox Code Playgroud)
并在AppDelegate中更新didFinishLaunching方法并添加如下所示的新方法
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)
}
Run Code Online (Sandbox Code Playgroud)
登录方法如下:
@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...
}
}
}
Run Code Online (Sandbox Code Playgroud)
它适用于我在Swift 3.0和SDK 4.17.0,我希望它适合你谢谢.
小智 5
你有没有为AppDelegate添加功能?
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11415 次 |
| 最近记录: |