gpt4 book ai didi

ios - 在 Swift 中使用 facebook 登录 api 时出现 "Open this page in APP_NAME"

转载 作者:行者123 更新时间:2023-11-30 12:55:34 25 4
gpt4 key购买 nike

我在我的 ios 应用程序的 Swift 中使用 facebook 登录 api(SDK 版本可选("4.1.0"))。我将 Facebook 登录按钮放在我的 View Controller 上,当用户单击它时 - 它会在 Safari 中打开 Facebook 登录面板。当用户输入凭据并单击登录时,他会看到带有问题的弹出消息:

Open this page in APP_NAME?

Cancel OPEN

我想摆脱它并直接打开应用程序。我处理按钮行为的代码如下:

class ViewController: UIViewController, FBSDKLoginButtonDelegate {
@IBOutlet weak var fbLoginButton: FBSDKLoginButton!

override func viewDidLoad() {
super.viewDidLoad()
fbLoginButton.readPermissions = ["public_profile", "email"]
fbLoginButton.layer.cornerRadius = 5
fbLoginButton.delegate = self
self.fbLoginButton.delegate = self
FBSDKProfile.enableUpdates(onAccessTokenChange: true)
}

override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)

if (FBSDKAccessToken.current() != nil){

let tokenAsAParam = [
"access_token":FBSDKAccessToken.current().tokenString!
]

let loginManager = FBSDKLoginManager()

FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, email"]).start(completionHandler: { (connection, result, error) -> Void in
if (error == nil){
let data:[String:AnyObject] = result as! [String : AnyObject]
let defaults = UserDefaults.standard
let firstName:String = data["first_name"] as! String!

defaults.set(firstName, forKey: "facebook_display_name")
defaults.synchronize()
}else {
print("fb error")
}
})

Alamofire.request("\(serverURL)/auth/facebook", method: .post, parameters: tokenAsAParam)
.validate()
.responseJSON { response in

switch(response.result) {

case .success:
self.performSegue(withIdentifier: "openMainApp", sender: self)
break
case .failure:
print(response.result.error)
loginManager.logOut()
break
}
}
}

在上面的代码中,我从 Facebook 获取用户的数据,并将 token 发送到我的网络服务,以验证用户是否真实,并执行一些后端操作。

我的 info.plist 文件是:

<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>fbXXXXXXXXXX</string>
</array>
</dict>
</array>
<key>FacebookAppID</key>
<string>2XXXXXXXXXXX</string>
<key>FacebookDisplayName</key>
<string>xxxxxxxx</string>
<key>LSApplicationCategoryType</key>
<string></string>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>

此外,在我的 appDelegate 中,我有以下方法:

func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
print("SDK version \(FBSDKSettings .sdkVersion())")

...
return true
}



func application(_ application: UIApplication,
open url: URL, sourceApplication: String?, annotation: Any) -> Bool {

return FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: sourceApplication, annotation: annotation)
}
// [END openurl]

@available(iOS 9.0, *)
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool {

return FBSDKApplicationDelegate.sharedInstance().application(app, open: url, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String?, annotation: options[UIApplicationOpenURLOptionsKey.annotation])
}

但它仍然显示这个奇怪的弹出窗口,而不是正常打开应用程序。

有谁知道我可以做些什么来解决这个问题?

最佳答案

这是为原生 iOS 设备集成 FB 的更好方法之一,您可以从这里获取解决方案:

http://www.theappguruz.com/blog/facebook-integration-using-swift

另请从开发者 FB 帐户检查应用程序设置

关于ios - 在 Swift 中使用 facebook 登录 api 时出现 "Open this page in APP_NAME",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40437451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com