お世話になります。
主に以下のリンクを参考にiOSアプリのFBログイン機能を作っています。
http://qiita.com/noranoko/items/e1406cdd957f439db066
「5.Welcome画面にログイン機能をつける」で、ログインまではできるのですが、ログインした後ログアウトボタンに戻ることなく、再度ログインボタンがあらわれてしまいます(再度ログインボタンを押すと既にログイン認証しているよ、と言われます、正確には、”You have already authorized AppName.”と言われます。)
swiftやxcodeのバージョンが古いもので上記リンクは解説されているので、随所でxcodeが推奨する変更を行い問題なくできておりましたが、素人ながら、appdelegate.swiftでの以下の記載が問題となっている気がしております。
上記リンクのコード
func application(application: UIApplication,openURL url: NSURL,sourceApplication: String?,annotation: AnyObject?) -> Bool { return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation) }
修正後コード
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool { return FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: sourceApplication, annotation: annotation) }
使用している環境は以下です。
xcode: v8.1
OS X EI capitan v10.11.6
facebookのライブラリは、以下のprofileでcocoapodで入れています。
target 'insApp' do use_frameworks! pod 'FBSDKCoreKit' pod 'FBSDKShareKit' pod 'FBSDKLoginKit' end
なお、その後の画面遷移のセグエも設定しましたがログイン後画面遷移は行われておりません。ですので、おそらく以下でログインされていることと認識されていないと思うのですが、かなりお手上げで参っております。。
override func viewDidAppear(_ animated: Bool) { if (FBSDKAccessToken.current() != nil) { print("User Already Logged In") //後で既にログインしていた場合の処理(メイン画面へ遷移)を書く self.performSegue(withIdentifier: "showMain", sender: self) } else { print("User not Logged In") let loginView : FBSDKLoginButton = FBSDKLoginButton() self.view.addSubview(loginView) loginView.center = self.view.center loginView.readPermissions = ["public_profile", "email", "user_friends"] loginView.delegate = self } }
検索していろいろ探してみましたがどうも最新のxcodeに対応しているものが無いようにみえて困っております。Facebook developerページもみましたが、そもそもobjective Cでの記載しか見つからず理解不能でした。
些細なアドバイス、外部リンクでも結構ですので、何かヒントいただけると助かります。
追記です。
こちらのコードだと特にエラーもなくできましたが、問題は全く解決せず同様でした。
http://stackoverflow.com/questions/39632635/fb-login-using-swift-3-not-returning-any-values-and-not-get-back-the-user-to-the
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。