與 facebook 集成后,當我在模擬器上點擊繼續使用 Facebook按鈕時,它會在模擬器上彈出此視窗..當我點擊回傳主頁時,它會將我重定向到登錄視窗并允許我在 facebook 中滾動而不是重定向回我的應用程式,我沒有得到任何用戶資料。
這是我已經完成的步驟
- Pod 安裝:pod 'FBSDKLoginKit'
- 在 developer.facebook 的快速入門指南中添加了 Bundle ID
- Enable Single Sign 選項選擇為NO
- 在 info.plist 中添加了以下代碼

在AppDelegate中添加以下代碼
根據 Facebook 檔案,當我們匯入FacebookCore時,我們必須在 AppDelegate 中匯入它,我們會收到警告No such module 'FacebookCore'
import FBSDKCoreKit
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
ApplicationDelegate.shared.application(
application,
didFinishLaunchingWithOptions: launchOptions
)
return true
}
func application(
_ app: UIApplication,
open url: URL,
options: [UIApplication.OpenURLOptionsKey : Any] = [:]
) -> Bool {
ApplicationDelegate.shared.application(
app,
open: url,
sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String,
annotation: options[UIApplication.OpenURLOptionsKey.annotation]
)
}
在SceneDelegate中添加了以下代碼
根據 Facebook 檔案,當我們匯入FacebookCore時,我們必須在 SceneDelegate 中匯入它,我們會收到警告No such module 'FacebookCore'
import FBSDKCoreKit
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
guard let url = URLContexts.first?.url else {
return
}
ApplicationDelegate.shared.application(
UIApplication.shared,
open: url,
sourceApplication: nil,
annotation: [UIApplication.OpenURLOptionsKey.annotation]
)
}
在ViewController中添加以下代碼
根據 Facebook 檔案,當我們匯入時,我們必須在 ViewController中匯入 FacebookLogin ,我們會收到警告No such module 'FacebookLogin'
import FBSDKLoginKit
class ViewController: UIViewController, LoginButtonDelegate
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
if let token = AccessToken.current,
!token.isExpired {
let token = token.tokenString
let request = FBSDKLoginKit.GraphRequest(graphPath: "me", parameters: ["fields": "email,name"], tokenString: token, version: nil, httpMethod: .get)
request.start { connecton, result, error in
print("\(result)")
}
} else{
let loginButton = FBLoginButton()
loginButton.center = view.center
loginButton.delegate = self
loginButton.permissions = ["public_profile", "email"]
view.addSubview(loginButton)
}
}
func loginButton(_ loginButton: FBLoginButton, didCompleteWith result: LoginManagerLoginResult?, error: Error?) {
let token = result?.token?.tokenString
let request = FBSDKLoginKit.GraphRequest(graphPath: "me", parameters: ["fields": "email,name"], tokenString: token, version: nil, httpMethod: .get)
request.start { connecton, result, error in
print("\(result)")
}
}
我已經嘗試過第 2 步,但在設定開發環境時出現
uj5u.com熱心網友回復:
我認為您弄錯了 Facebook 登錄步驟。
第 1 步:- 安裝以下 pod
pod 'FacebookCore'
pod 'FacebookLogin'
pod 'FacebookShare'
第 2 步:- 添加必要的 facebook 憑據(facebook 應用程式 ID)并CFBundleURLTypes在info.plist檔案中


第 3 步:- 匯入FacebookCore并FacebookLogin在UIViewController您想要 Facebook 登錄功能的位置。
呼叫此方法以使用 facebook 登錄。
func setupFacebookLogin(){
let loginManager = LoginManager()
loginManager.logOut()
loginManager.logIn(permissions: ["public_profile", "email"], from: self, handler: { result, error in
if error != nil {
print("ERROR: Trying to get login results")
} else if result?.isCancelled != nil {
print("The token is \(result?.token?.tokenString ?? "")")
if result?.token?.tokenString != nil {
print("Logged in")
let graphRequest: GraphRequest = GraphRequest(graphPath: "me", parameters: ["fields": "id, first_name, middle_name, last_name, name, picture, email, gender, birthday"])
graphRequest.start { _, result, error in
if error != nil {
let data: [String: AnyObject] = result as! [String: AnyObject]
print("Facebook user data - ",data)
}
} else {
print("Cancelled")
}
}
})
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/461524.html
