登录已取消

时间:2016-08-30 20:40:43

标签: swift facebook-ios-sdk

我使用Facebook SDK for Swift,通过cocoapods安装。我已按以下方式配置示例应用程序:

  1. 在开发者网站上添加了一个新的Facebook应用;
  2. 添加了具有正确捆绑标识符的iOS应用程序;
  3. 在iOS应用程序上编辑了info.plist以添加:
  4. <key>CFBundleURLTypes</key>
      <array>
          <dict>
              <key>CFBundleURLSchemes</key>
              <array>
                  <string>fb169432773464820</string>
              </array>
          </dict>
      </array>
      <key>CFBundleVersion</key>
      <string>1</string>
      <key>FacebookAppID</key>
      <string>{APPID}</string>
      <key>FacebookDisplayName</key>
      <string>AppDisplayName</string>
      <key>LSApplicationQueriesSchemes</key>
      <array>
          <string>fbapi</string>
          <string>fbauth</string>
          <string>fb-messenger-api</string>
          <string>fbauth2</string>
          <string>fbshareextension</string>
      </array>
    

    在此之后,我创建了一个自定义UIButton,其操作如下:

    @IBAction func facebookTouched(sender: UIButton) {
        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("Logged in!")
            }
        }
    }
    

    单击UIButton时,将调用该操作,Safari浏览器将打开Facebook页面。 由于我已经接受了这个应用程序,因此我得到以下消息&#34; ApplicatioName已被接受&#34;当我按下&#34; Ok&#34;浏览器移动到空白页面,没有任何反应。如果我按下&#34;完成&#34;按钮.Cancelled case被调用。

    有什么想法吗?干杯

1 个答案:

答案 0 :(得分:1)

AppDelegate上的问题是Facebook ApplicationDelegate方法还需要调用:

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

        return true
    }

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

        ApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions)

        return true
    }