ios - ios9中的facebook登录问题

标签 ios swift facebook

在我的应用程序中,我集成了 facebook 登录,并放置了所有需要的设置。但是当我尝试登录时,我得到了这个错误

-canOpenURL: failed for URL: "fbauth2:/" - error: "(null)"

但是我已经把

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>fbapi</string>
    <string>fb-messenger-api</string>
    <string>fbauth2</string>
    <string>fbshareextension</string>

在 .plist 文件中,我能找到问题吗??

已编辑

 self.loginButton.delegate = self;
        if (FBSDKAccessToken.currentAccessToken() != nil)
        {
            // User is already logged in, do work such as go to next view controller.
        }
        else
        {

            loginButton.center = self.view.center
            loginButton.readPermissions = ["public_profile", "email", "user_friends"]
            loginButton.delegate = self
        }


    //MARK : facebook integration
    func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) {

        print(result);
        if ((error) != nil)
        {
            // Process error
            self.showCancelAlert("Error", message: "Error occured")
        }
        else if result.isCancelled {
            // Handle cancellations
        }
        else {
            // If you ask for multiple permissions at once, you
            // should check if specific permissions missing
            if result.grantedPermissions.contains("email")
            {
                // Do work
                self.returnUserData();

            }else{
                self.showCancelAlert("Error", message: "Cannot process with your email address")

            }
        }
    }

    func loginButtonDidLogOut(loginButton: FBSDKLoginButton!) {

    }

    // accessToken is your Facebook id
    func returnUserProfileImage(accessToken: NSString) -> String
    {
        let userID = accessToken as NSString
        let facebookProfileUrl = NSURL(string: "http://graph.facebook.com/\(userID)/picture?type=large")

        if facebookProfileUrl?.absoluteString != nil{
            return (facebookProfileUrl?.absoluteString)!;
        }else{
            return "";
        }

    }




    func returnUserData()
    {
        let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: nil)
        graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in

            if ((error) != nil)
            {
                // Process error
                 print("error \(error)")

            }
            else
            {
                let userName : NSString = result.valueForKey("name") as! NSString

                 UserDefaults.sharedInstace.setUsername(userName as String)

                if result.valueForKey("email") != nil{

                    let userEmail : NSString = result.valueForKey("email") as! NSString

                    if let id: NSString = result.valueForKey("id") as? NSString {
                        print("ID is: \(id)")

                        self.showLoading("Signin...")
                        WebClient.sharedInstace.socialLogin(SocialLogin(uid:String(id) , name: userName as String, imageUrl: self.returnUserProfileImage(id), email: userEmail as String, provider: "facebook"))

                    } else {
                        print("ID es null")

                        self.showCancelAlert("Error", message: "Cannot process with your email address")

                        self.loginButtonDidLogOut(self.loginButton)
                    }
                }else{

                    FBSDKLoginManager().logOut()

                    self.loginButtonDidLogOut(self.loginButton)

                    print("email es null")

                    self.showCancelAlert("Error", message: "Cannot process with your email address")

                }

            }
        })
    }

最佳答案

我认为有几件事可能会导致您的问题。

1) 你确定你已经添加了最新的 FBSDKCoreKit 和 FBSDKLoginKit 并将这些行添加到你的 swift 文件的顶部:

import FBSDKCoreKit
import FBSDKLoginKit

2) 我读到这只是模拟器上的一个错误,应该忽略。确保您是在真实设备上测试此功能。

3) 您是否在类声明的标题中包含了 FBSDKLoginButtonDelegate

4) 我会确保您的 info.plist 源代码全部包含在内并且正确无误。这是我在我的应用程序中为 Facebook 添加的内容:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>fbapi</string>
    <string>fb-messenger-api</string>
    <string>fbauth2</string>
    <string>fbshareextension</string>
</array>
<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string> fb + FACEBOOKAPPIDFROMTHEFACEBOOKDEVCONSOLE </string>
        </array>
    </dict>
</array>
<key>FacebookAppID</key>
<string>FACEBOOKAPPIDFROMTHEFACEBOOKDEVCONSOLE</string>
<key>FacebookDisplayName</key>
<string>NAME OF YOUR APP</string>

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <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>
        <key>akamaihd.net</key>
        <dict>
            <key>NSIncludesSubdomains</key> <true/>
            <key>NSThirdPartyExceptionRequiresForwardSecrecy</key> <false/>
        </dict>
    </dict>
</dict>

关于ios - ios9中的facebook登录问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38749463/

相关文章:

Facebook Graph API,内容未被正确抓取

Android:什么是 Facebook SDK 4.x 中的共享对话框类

javascript - 通过 Javascript SDK 登录 Facebook 可在移动设备和本地主机上使用,但不适用于台式计算机

ios - 出现红线错误 "Thread 1: signal SIGTERM"时如何调试

iphone - iPad 上 MPMoviePlayerController 支持的视频格式有哪些?

android - 是否可以在 android/ios/flutter 中同时播放多个音频文件?

json - 下载后如何打印自定义 JSON 对象值?

iphone - 如何使用 MPMoviePlayerController 播放视频?

ios - 截取屏幕时显示警报并要求输入文本

swift - 在 UIAlertViewDelegate 中的索引处单击的按钮未被调用