🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Facebook

Facebookは、実名登録制のSNS(ソーシャル・ネットワーキング・サービス)です。開発者用のデベロッパーサイトが存在し、一般ユーザーによるFacebook向けアプリケーション開発が可能です。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

2回答

692閲覧

Facebook developersクイックスタートの「アプリデリゲートに接続する」の翻訳依頼

iOS25535009

総合スコア12

Facebook

Facebookは、実名登録制のSNS(ソーシャル・ネットワーキング・サービス)です。開発者用のデベロッパーサイトが存在し、一般ユーザーによるFacebook向けアプリケーション開発が可能です。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/11/28 17:38

編集2019/12/03 11:07

Facebookのログイン機能を実装したい

バージョン

macOS mojave10.14.6
Xcode10.2

やってみる

この記事にて大体の段取りが見えたものの、この通りやってもうまくいかない、Facebook developersのクイックスタートを見ながら実装してみるが・・・。

①facebook for developersにてアプリを登録の上、クイックスタートを選択

②iOSを選択
イメージ説明
③1.から順にやっていく
イメージ説明
●1.開発環境を設定する
Podfileを開き、

pod 'FBSDKLoginKit'

を書き足す。
イメージ説明

ターミナルを開き、プロジェクトのフォルダを指定してから

$ pod install

を実行。
イメージ説明
「次へ」をクリック。
イメージ説明

●2.バンドルIDを追加する
プロジェクトのバンドルID(Bundle Identifier)を
イメージ説明
入力して「Save」→「次へ」
イメージ説明

●4a.info.plistを構成する
プロジェクトの「info.plist」を右クリックし、「Open As」→「Source Code」にて
イメージ説明

下記を追加

<key>CFBundleURLTypes</key> <array>  <dict>   <key>CFBundleURLSchemes</key>    <array>     <string>fb719968188486104</string>    </array>  </dict> </array> <key>FacebookAppID</key> <string>719968188486104</string> <key>FacebookDisplayName</key> <string>Oh-gili</string>

●4b.ビルド設定
「Build Setting」の「Other Linker Flags」の全てのビルドターゲットに関して「-ObjC」を追加する
イメージ説明
「次へ」
イメージ説明
●5.アプリデリゲートに接続する
ここで何故か見本がSwiftではなく、Ovjective-Cで書かれており、やる気が失せる。

// AppDelegate.m #import <FBSDKCoreKit/FBSDKCoreKit.h> - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions]; // Add any custom logic here. return YES; } - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options { BOOL handled = [[FBSDKApplicationDelegate sharedInstance] application:application openURL:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] annotation:options[UIApplicationOpenURLOptionsAnnotationKey] ]; // Add any custom logic here. return handled; }

がしかし、ネット上の情報をもとに翻訳してみる。

AppDelegate.swiftにて
イメージ説明

import UIKit import FBSDKCoreKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication,didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // setupFBSDK ApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions) return true } func application(_ application: UIApplication,open url: URL,sourceApplication: String?,annotation: Any) -> Bool { //Facebook ApplicationDelegate.shared.application(application, open: url, sourceApplication: sourceApplication, annotation: annotation) return true } func applicationDidBecomeActive(_ application: UIApplication) { AppEvents.activateApp() }

●6.Facebookログインボタンを追加する。
ここでもOvjective-Cで書かれているので、自力で翻訳。参考記事

<ViewController.swift>

import UIKit import FBSDKCoreKit import FBSDKLoginKit class ViewController: UIViewController,LoginButtonDelegate { override func viewDidLoad() { super.viewDidLoad() } override func viewDidAppear(_ animated: Bool) { //ログイン済みかチェック if let _ = AccessToken.current { //画面遷移 performSegue(withIdentifier: "modalTop", sender: self) }else{ //FBログインボタン設置 let fbLoginBtn = FBLoginButton() fbLoginBtn.permissions = ["public_profile", "email"] fbLoginBtn.center = self.view.center fbLoginBtn.delegate = self self.view.addSubview(fbLoginBtn) } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } //ログインコールバック func loginButton(_ loginButton: FBLoginButton!, didCompleteWith result: LoginManagerLoginResult!, error: Error!) { //エラーチェック if error == nil { //キャンセルしたかどうか if result.isCancelled { print("キャンセル") }else{ //画面遷移 performSegue(withIdentifier: "modalTop", sender: self) } }else{ print("エラー") } } //ログアウトコールバック func loginButtonDidLogOut(_ loginButton: FBLoginButton!) { } }

ネット上の情報もところどころ変わったところがあり、Fixしたりしながら、なんとか修正しました。

このようなボタンが中央に配置されるはずです。
イメージ説明

質問ではなくなりましたが、

質問とするならば、この実装の仕方で合ってますでしょうか?
不備があれば教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MasakiHori

2019/12/03 05:01

英文をSwiftに直してほしいとはどういう意味ですか?
iOS25535009

2019/12/03 11:11

すいません。コピペ間違いでした。
guest

回答2

0

自己解決

丸投げ質問の書き方を変えていった結果、結局自己解決になってしまった。ので、上記に載せます。

投稿2019/12/03 11:18

iOS25535009

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

swiftに変換はわかりませんが、

google先生の答え

投稿2019/12/03 05:59

hameji

総合スコア1380

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

iOS25535009

2019/12/03 11:12

すいません。コピペ間違いでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問