質問編集履歴

3

画像の変更

2019/12/03 11:07

投稿

iOS25535009
iOS25535009

スコア12

test CHANGED
File without changes
test CHANGED
@@ -38,7 +38,7 @@
38
38
 
39
39
  を書き足す。
40
40
 
41
- ![イメージ説明](fe1b5c299975d6285035946b3a5a3ff4.png)
41
+ ![イメージ説明](dc6f42d3c0d2444284eb6292aceb8b06.png)
42
42
 
43
43
 
44
44
 
@@ -52,7 +52,7 @@
52
52
 
53
53
  を実行。
54
54
 
55
- ![イメージ説明](c8cea41eeec73cce823f87060c0acce2.png)
55
+ ![イメージ説明](e79ac438330af911fee985d510e6e23b.png)
56
56
 
57
57
  「次へ」をクリック。
58
58
 

2

質問が丸投げという部分を大幅に修正。コードのコピペ間違いの修正。

2019/12/03 11:07

投稿

iOS25535009
iOS25535009

スコア12

test CHANGED
File without changes
test CHANGED
@@ -1,42 +1,48 @@
1
- ### Facebookのログイン機能を実装したい
1
+ # Facebookのログイン機能を実装したい
2
+
2
-
3
+ ### バージョン
4
+
3
-
5
+ macOS mojave10.14.6
6
+
4
-
7
+ Xcode10.2
8
+
9
+
10
+
11
+ ### やってみる
12
+
5
- [この記事](https://qiita.com/toshi4dev/items/3fa8cac1154e7b109c4d)にて大体の段取りが見えたものの、この通りやってもうまくいかないFacebook developersのクイックスタート見ながら実装してみる。
13
+ [この記事](https://qiita.com/toshi4dev/items/3fa8cac1154e7b109c4d)にて大体の段取りが見えたものの、この通りやってもうまくいかないFacebook developersのクイックスタート見ながら実装してみるが・・・
14
+
15
+
16
+
6
-
17
+ ①facebook for developersにてアプリを登録の上、クイックスタートを選択
18
+
7
-
19
+ ![](1df4d379587a2e330b3d440bfde94f8a.png)
20
+
8
-
21
+ ②iOSを選択
22
+
23
+ ![イメージ説明](4530a5fb0334d586e9e609bfa0a1b89d.png)
24
+
25
+ ③1.から順にやっていく
26
+
27
+ ![イメージ説明](57a284c2ac6eef73018da2f118649fbd.png)
28
+
29
+ ●1.開発環境を設定する
30
+
9
- ①キータの記事ではPodfile
31
+ Podfileを開き、
10
-
11
- ```ここに言語を入力
32
+
12
-
13
- pod 'FacebookCore'
14
-
15
- pod 'FacebookLogin'
16
-
17
- pod 'FacebookShare'
18
-
19
- ```
33
+ ```
20
-
21
- を加えるが、Facebook developersのクイックスタートでは
34
+
22
-
23
- ```ここに言語を入力
24
-
25
-
26
-
27
- pod 'FBSDKLoginKit'
35
+ pod 'FBSDKLoginKit'
28
-
29
-
30
-
36
+
31
- ```
37
+ ```
32
-
38
+
33
- である
39
+ を書き足す
34
-
40
+
35
- とりあえずFacebook developersのクイックスタートに従い、後者を加筆。
41
+ ![イメージ説明](fe1b5c299975d6285035946b3a5a3ff4.png)
36
-
37
-
38
-
42
+
43
+
44
+
39
- ターミナル
45
+ ターミナルを開き、プロジェクトのフォルダを指定しから
40
46
 
41
47
  ```
42
48
 
@@ -46,13 +52,35 @@
46
52
 
47
53
  を実行。
48
54
 
49
-
55
+ ![イメージ説明](c8cea41eeec73cce823f87060c0acce2.png)
56
+
50
-
57
+ 「次へ」をクリック。
58
+
59
+ ![イメージ説明](6e6a2bec1dbc6f2f4a1664f3f7bf5114.png)
60
+
61
+
62
+
51
- バンドルIDを設定
63
+ ●2.バンドルIDを追加する
64
+
52
-
65
+ プロジェクトのバンドルID(Bundle Identifier)を
66
+
53
-
67
+ ![イメージ説明](a06a738480245f98a8fb4fb2b7d09211.png)
68
+
54
-
69
+ 入力して「Save」→「次へ」
70
+
71
+ ![イメージ説明](606132c8768ef96f8219ac8c369d4398.png)
72
+
73
+
74
+
55
- info.plistに下記追加
75
+ ●4a.info.plistを構成する
76
+
77
+ プロジェクトの「info.plist」を右クリックし、「Open As」→「Source Code」にて
78
+
79
+ ![イメージ説明](f4d61bf6a7e61964d15ab98ae4c46138.png)
80
+
81
+
82
+
83
+ 下記を追加
56
84
 
57
85
  ```
58
86
 
@@ -86,52 +114,266 @@
86
114
 
87
115
  ```
88
116
 
89
-
90
-
91
- ④アプリデリトに接続する
92
-
93
- ここで何故か見本がOvjective-Cで書かれており、AppDelegateの修正が難航しております。この文をSwiftに直していただける方はいらっしゃいますでしょうか?
94
-
95
- ```
96
-
97
- Since our free code block converter is in high demand, we have been experiencing an extremely high load on our servers.
98
-
99
-
100
-
101
- To better serve our existing users, a free registration is now required.
102
-
103
-
104
-
105
- Thanks for understanding!
106
-
107
- ```
108
-
109
- また、Ovjective-CからSwiftに変換してくれるobjc2swiftなるものがあるそうですが、[この記事](https://techblog.yahoo.co.jp/ios/objc2swift/)をもとに使ってみようとするも、
110
-
111
-
112
-
113
- 「ビルドは Gradle で一発です。」とあるので「まずはGradleをインストールか…」しかし、[この記事](https://reasonable-code.com/install-gradle/)にて「Homebrewを使えば以下のコマンド1行でインストールできます」とあり、「Homebrewが先か…」と[この記事](https://reasonable-code.com/homebrew/)を見てHomebrewをインストール。「よしこれでGradleを一発で…」だと思ったが、その前に「Java JDKが必要です」となったので、Java JDKをインストール。ここでようやくGradleをインストールし、objc2swiftのインストールに差し掛かったところで「このビルドでは非推奨のGradle機能が使用されていたため、Gradle 7.0と互換性がありません。」というエラーが出て
114
-
115
-
116
-
117
- 諦める。
118
-
119
- ### 質問内容
120
-
121
- 結局のところ、
122
-
123
- この文をSwiftに直していただける方はいらっしゃいますでしょうか?
124
-
125
- ```
126
-
127
- Since our free code block converter is in high demand, we have been experiencing an extremely high load on our servers.
128
-
129
-
130
-
131
- To better serve our existing users, a free registration is now required.
132
-
133
-
134
-
135
- Thanks for understanding!
136
-
137
- ```
117
+ ●4b.ビルド設定
118
+
119
+ 「Build Setting」の「Other Linker Flags」の全てのビルドタートに関して「-ObjC」を追加する
120
+
121
+ ![イメージ説明](1ce11d451ab1c0998aa3142ad2832bcb.png)
122
+
123
+ 「次へ」
124
+
125
+ ![イメージ説明](69b836077ab202688d46e6e12e3a47f3.png)
126
+
127
+ ●5.アプリデリゲートに接続する
128
+
129
+ ここで何故か見本がSwiftではなく、Ovjective-Cで書かれており、やる気が失せる。
130
+
131
+ ```
132
+
133
+
134
+
135
+ // AppDelegate.m
136
+
137
+ #import <FBSDKCoreKit/FBSDKCoreKit.h>
138
+
139
+
140
+
141
+ - (BOOL)application:(UIApplication *)application
142
+
143
+ didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
144
+
145
+
146
+
147
+ [[FBSDKApplicationDelegate sharedInstance] application:application
148
+
149
+ didFinishLaunchingWithOptions:launchOptions];
150
+
151
+ // Add any custom logic here.
152
+
153
+ return YES;
154
+
155
+ }
156
+
157
+
158
+
159
+ - (BOOL)application:(UIApplication *)application
160
+
161
+ openURL:(NSURL *)url
162
+
163
+ options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
164
+
165
+
166
+
167
+ BOOL handled = [[FBSDKApplicationDelegate sharedInstance] application:application
168
+
169
+ openURL:url
170
+
171
+ sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
172
+
173
+ annotation:options[UIApplicationOpenURLOptionsAnnotationKey]
174
+
175
+ ];
176
+
177
+ // Add any custom logic here.
178
+
179
+ return handled;
180
+
181
+ }
182
+
183
+
184
+
185
+ ```
186
+
187
+ がしかし、ネット上の情報をもとに翻訳してみる。
188
+
189
+
190
+
191
+ AppDelegate.swiftにて
192
+
193
+ ![イメージ説明](c477697c619e7dd4f86dcf6e4d8647b5.png)
194
+
195
+
196
+
197
+ ```
198
+
199
+ import UIKit
200
+
201
+ import FBSDKCoreKit
202
+
203
+
204
+
205
+ @UIApplicationMain
206
+
207
+ class AppDelegate: UIResponder, UIApplicationDelegate {
208
+
209
+
210
+
211
+ var window: UIWindow?
212
+
213
+
214
+
215
+ func application(_ application: UIApplication,didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
216
+
217
+ // setupFBSDK
218
+
219
+ ApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions)
220
+
221
+
222
+
223
+ return true
224
+
225
+ }
226
+
227
+
228
+
229
+ func application(_ application: UIApplication,open url: URL,sourceApplication: String?,annotation: Any) -> Bool {
230
+
231
+ //Facebook
232
+
233
+ ApplicationDelegate.shared.application(application, open: url, sourceApplication: sourceApplication, annotation: annotation)
234
+
235
+
236
+
237
+ return true
238
+
239
+ }
240
+
241
+
242
+
243
+ func applicationDidBecomeActive(_ application: UIApplication) {
244
+
245
+ AppEvents.activateApp()
246
+
247
+ }
248
+
249
+
250
+
251
+ ```
252
+
253
+ ●6.Facebookログインボタンを追加する。
254
+
255
+ ここでもOvjective-Cで書かれているので、自力で翻訳。[参考記事](https://qiita.com/palinco41kcal/items/92b64eadc54a46350d6c)
256
+
257
+
258
+
259
+ <ViewController.swift>
260
+
261
+ ```
262
+
263
+ import UIKit
264
+
265
+ import FBSDKCoreKit
266
+
267
+ import FBSDKLoginKit
268
+
269
+ class ViewController: UIViewController,LoginButtonDelegate {
270
+
271
+
272
+
273
+ override func viewDidLoad() {
274
+
275
+ super.viewDidLoad()
276
+
277
+ }
278
+
279
+
280
+
281
+ override func viewDidAppear(_ animated: Bool) {
282
+
283
+ //ログイン済みかチェック
284
+
285
+ if let _ = AccessToken.current {
286
+
287
+ //画面遷移
288
+
289
+ performSegue(withIdentifier: "modalTop", sender: self)
290
+
291
+ }else{
292
+
293
+ //FBログインボタン設置
294
+
295
+ let fbLoginBtn = FBLoginButton()
296
+
297
+ fbLoginBtn.permissions = ["public_profile", "email"]
298
+
299
+ fbLoginBtn.center = self.view.center
300
+
301
+ fbLoginBtn.delegate = self
302
+
303
+ self.view.addSubview(fbLoginBtn)
304
+
305
+ }
306
+
307
+ }
308
+
309
+
310
+
311
+ override func didReceiveMemoryWarning() {
312
+
313
+ super.didReceiveMemoryWarning()
314
+
315
+ }
316
+
317
+
318
+
319
+ //ログインコールバック
320
+
321
+ func loginButton(_ loginButton: FBLoginButton!, didCompleteWith result: LoginManagerLoginResult!, error: Error!) {
322
+
323
+ //エラーチェック
324
+
325
+ if error == nil {
326
+
327
+ //キャンセルしたかどうか
328
+
329
+ if result.isCancelled {
330
+
331
+ print("キャンセル")
332
+
333
+ }else{
334
+
335
+ //画面遷移
336
+
337
+ performSegue(withIdentifier: "modalTop", sender: self)
338
+
339
+ }
340
+
341
+ }else{
342
+
343
+ print("エラー")
344
+
345
+ }
346
+
347
+ }
348
+
349
+
350
+
351
+ //ログアウトコールバック
352
+
353
+ func loginButtonDidLogOut(_ loginButton: FBLoginButton!) {
354
+
355
+
356
+
357
+ }
358
+
359
+
360
+
361
+ }
362
+
363
+
364
+
365
+ ```
366
+
367
+ ネット上の情報もところどころ変わったところがあり、Fixしたりしながら、なんとか修正しました。
368
+
369
+
370
+
371
+ このようなボタンが中央に配置されるはずです。
372
+
373
+ ![イメージ説明](d7399042f6fa734fd32c7a42f15184a9.png)
374
+
375
+ ### 質問ではなくなりましたが、
376
+
377
+ 質問とするならば、この実装の仕方で合ってますでしょうか?
378
+
379
+ 不備があれば教えてください。

1

リンクをつけた

2019/12/03 11:02

投稿

iOS25535009
iOS25535009

スコア12

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- https://qiita.com/toshi4dev/items/3fa8cac1154e7b109c4dにて大体の段取りが見えたものの、この通りやってもうまくいかない。Facebook developersのクイックスタートも見ながら実装してみる。
5
+ [この記事](https://qiita.com/toshi4dev/items/3fa8cac1154e7b109c4d)にて大体の段取りが見えたものの、この通りやってもうまくいかない。Facebook developersのクイックスタートも見ながら実装してみる。
6
6
 
7
7
 
8
8
 
@@ -106,11 +106,11 @@
106
106
 
107
107
  ```
108
108
 
109
- また、Ovjective-CからSwiftに変換してくれるobjc2swiftなるものがあるそうですが、https://techblog.yahoo.co.jp/ios/objc2swift/をもとに使ってみようとするも、
109
+ また、Ovjective-CからSwiftに変換してくれるobjc2swiftなるものがあるそうですが、[この記事](https://techblog.yahoo.co.jp/ios/objc2swift/)をもとに使ってみようとするも、
110
110
 
111
111
 
112
112
 
113
- 「ビルドは Gradle で一発です。」とあるので「まずはGradleをインストールか…」しかし、https://reasonable-code.com/install-gradle/にて「Homebrewを使えば以下のコマンド1行でインストールできます」とあり、「Homebrewが先か…」とhttps://reasonable-code.com/homebrew/を見てHomebrewをインストール。「よしこれでGradleを一発で…」だと思ったが、その前に「Java JDKが必要です」となったので、Java JDKをインストール。ここでようやくGradleをインストールし、objc2swiftのインストールに差し掛かったところで「このビルドでは非推奨のGradle機能が使用されていたため、Gradle 7.0と互換性がありません。」というエラーが出て
113
+ 「ビルドは Gradle で一発です。」とあるので「まずはGradleをインストールか…」しかし、[この記事](https://reasonable-code.com/install-gradle/)にて「Homebrewを使えば以下のコマンド1行でインストールできます」とあり、「Homebrewが先か…」と[この記事](https://reasonable-code.com/homebrew/)を見てHomebrewをインストール。「よしこれでGradleを一発で…」だと思ったが、その前に「Java JDKが必要です」となったので、Java JDKをインストール。ここでようやくGradleをインストールし、objc2swiftのインストールに差し掛かったところで「このビルドでは非推奨のGradle機能が使用されていたため、Gradle 7.0と互換性がありません。」というエラーが出て
114
114
 
115
115
 
116
116