質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%

Q&A

解決済

1回答

749閲覧

Google カレンダーAPI の認証時に出るログは消せるものなのでしょうか?→皆様はどうやって消せるかどうかの答えに辿り着くのでしょうか?

tmyk1979

総合スコア145

0グッド

0クリップ

投稿2022/03/24 17:30

編集2022/03/29 17:45

前提

最終的にはGoogleカレンダーAPIを叩いて情報を引っ張りたいと思っているのですが、現時点ではGoogleにログインするだけのアプリを作っています。

サインインボタンをタップするとログイン画面が表示されて、メールアドレスとパスワードを入力(2回目以降はアカウントを選択)するとログインできる機能を実装中に以下のエラーメッセージが発生しました。 ログが吐き出されます。

参考にしたサイトは https://developers.google.com/identity/sign-in/ios/start?ver=swift です。

参考にしたというか、クライアントID以外のところはほぼコピペです。

実現したいこと

試しにユーザーネームなどをコンソールにprintさせた所、printできたのでログインはできているようです。

このエラー ログを放置しても問題は無いかも知れないのですが、解消する方法 表示させない方法があるのであれば、エラーの原因とその解消方法 このログが出てしまう原因と、このログをprintに表示させない方法をご教示いただきたいと思います。

よろしくお願いします。

発生している問題・エラーメッセージ ログ

2022-03-25 02:02:32.039823+0900 G-Calender[14235:12275928] GTMSessionFetcher invoking fetch callbacks, data {length = 271, bytes = 0x7b0a2020 22737562 223a2022 31313632 ... 3a20226a 61220a7d }, error (null)

該当のソースコード

Swift

1// AppDelegate.Swift 2 3import UIKit 4import GoogleSignIn 5 6@UIApplicationMain 7class AppDelegate: UIResponder, UIApplicationDelegate { 8 9 func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:] ) -> Bool { 10 var handled: Bool 11 12 handled = GIDSignIn.sharedInstance.handle(url) 13 if handled { 14 return true 15 } 16 17 // Handle other custom URL types. 18 19 // If not handled by this app, return false. 20 return false 21 } 22 23 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 24 // Override point for customization after application launch. 25 26 GIDSignIn.sharedInstance.restorePreviousSignIn { user, error in 27 if error != nil || user == nil { 28 // Show the app's signed-out state. 29 print("ログアウト") 30 } else { 31 // Show the app's signed-in state. 32 print("ログイン") 33 } 34 } 35 return true 36 } 37 38 // MARK: UISceneSession Lifecycle 39 40 func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { 41 // Called when a new scene session is being created. 42 // Use this method to select a configuration to create the new scene with. 43 return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) 44 } 45 46 func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) { 47 // Called when the user discards a scene session. 48 // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. 49 // Use this method to release any resources that were specific to the discarded scenes, as they will not return. 50 } 51 52 53}

Swift

1//ViewController.swift 2 3import UIKit 4import GoogleSignIn 5 6class ViewController: UIViewController { 7 8//xxxxxxxxxはGoogle Cloud Platformで取得したクライアントID 9 10 let signInConfig = GIDConfiguration.init(clientID: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx") 11 12 //サインインボタン 13 @IBAction func signIn(sender: Any) { 14 GIDSignIn.sharedInstance.signIn(with: signInConfig, presenting: self) { user, error in 15 guard error == nil else { 16 return } 17 // If sign in succeeded, display the app's main content View. 18 } 19 } 20 21 //サインアウトボタン 22 @IBAction func signOut(sender: Any) { 23 GIDSignIn.sharedInstance.signOut() 24 } 25 26} 27

認証済みドメインには何を記入したら良いのか分からなかったため、以下の画像のように「example.com」を指定しています。

イメージ説明

試したこと

・認証済みドメインに自分が持っているWebサイトのURLのドメインを指定してみた。
・認証済みドメインに「google.com」を指定してみた。
・認証済みドメインに「クライアントID:/oauthredirect」を指定してみた。(これは指定の段階で弾かれました。)
・エラー内容でググる。(エラーを解消できる記事は見当たりませんでした。)
・AppAuth、GTMAppAuth、GoogleAPIClientForREST/Calendar などを使う方法も試しましたが、認証画面が表示されず断念しました。
・GoogleSignInのサンプルもクローンしてみたのですがビルドするとエラーが17個も出てしまい手が付けられませんでした。

→そもそもエラーではなく、ログだったので上記試した事は無駄でした。

ログを出力する命令を書いた覚えは無いので、このログがどうして出力されてしまうのか分かりません。デフォルトで出力されるものなのでしょうか?

あっても害は無さそうなのですが、printさせない事ができるのであればその方法をご教示いただきたいと思います。

よろしくお願いします。

補足情報(FW/ツールのバージョンなど)

Xcode11.6
iphoneSE
iOS13.6

       ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

たぶんここで定義されてると思いますが、
https://github.com/google/gtm-session-fetcher/blob/7fcd225add5457d388cdef224c2f74b6fcd28b24/Source/GTMSessionFetcher.h#L282
デバッグビルドの時だけログを出力してるような…。

・・・というありがたい追記・修正依頼をいただきました。

・・・という事は、この部分をいじればログが表示されないようにもできるのだと思います。ただ、Swift以外のプログラミング言語は全く分からない私がその部分をいじるのは危険と判断しました。ちょっと時間が空いた時にプロジェクトをコピーして、その部分だけコメントアウトしてみるとかはすると思いますが、ちょっといつになるかは分かりません。

でも何となく、その部分で「デバッグ時のみログを出す」ということをやっているのだなぁ・・・というのは想像できました。ありがとうございます。

ここまで来ると「この質問は最初から自分の勘違いで投稿してしまった」という感もありつつ、質問の内容も変わってきてしまうのですが、

アドバイスしてくださった方や、他のSwiftに詳しい方たちはどうやって「たぶんここで定義されてると思いますが、」の『ここ』にたどり着くのでしょうか?

できれば自力で『ここ』に辿り着けるようになりたいので、「こういう単語で検索すると出てくる」とか「公式のGithubはくまなく目を通して理解しろ」とか、何かしらアドバイスをいただけるとありがたいです。

しつこい質問者で申し訳ないのですが、もし差し支えなければヒントだけでも教えていただきたいと思います。
よろしくお願いします。

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

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

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

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

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

tmyk1979

2022/03/25 16:53 編集

hoshi-takanori様、追記・修正の依頼ありがとうございます。 これはログだったのですね、、、 提示していただいたページは翻訳して読んでいたのですが、私のコンソールに出力されていた部分もログだとは気づかず、この部分はエラーだと思い込み、StackOverFlowの質問者さんのスクリーンショットの部分だけがログなのかと思い込んでいました。 原文を見てみるとそこまで難しい英語ではなく、原文を読んだ方が分かりやすかったので、今後はいきなり翻訳にいかず、原文を読んで分からなければ翻訳に突っ込むようにします。 printされるメッセージ自体も消えるかと思ってStackOverFlowで提示されている方法で真似もしていたのですが、私のコンソールに表示されるログ自体は消えませんでした。このStackOverflowの質問者さんの場合はログの下にもズラズラとprintが続いており、それは消せたのかも知れません。 このログ自体を非表示にできるかどうか試した上で、自力でできなければ質問を書き換えようと思います。 重ねて、ありがとうございました。
tmyk1979

2022/03/29 17:27

「GTMSessionFetcher.h」っていう事はSwiftではないのかな。。。Objective-C?とかなのでしょうか? Swift以外の言語は全くなのでちょっと分からないのですが、提示していただいた部分でデバッグの時だけログを出しているというのは何となく分かりました。 そこをいじれば消せなくもないのでしょうけど、私がいじるのは危険と判断しました。 かなり探すとか、各ファイルをくまなく読んで理解するとかしないとこの部分にたどり着けないような気がするのですが、hoshi-takanori様がどのようにしてこの記述を見つけたのか教えていただけないでしょうか? できれば自力で辿り着けるようになりたいです。 もし差し支えなければよろしくお願いします。
hoshi-takanori

2022/03/30 16:51 編集

Stackoverflow の回答のスクショでコメントされてる関数名で検索しました。(ちゃんと確かめたわけではないので間違ってるかもですが。) というか、Xcode 上でライブラリを使ってるなら、ソースコードを検索したり、関数の定義元や使ってる場所を調べたり出来るはず…。
tmyk1979

2022/03/31 08:02

回答ありがとうございます。 確かに、Jump to definitionで件の定義に飛ぶことができました。 ただ、目の付け所的にはやはり自力では難しかったと思います。 今回はhosi-takanori様のおかげで分かりましたが、いずれは自力で 答えにたどり着けるようになりたいです。 今回は本当にありがとうございました!
guest

回答1

0

自己解決

アドバイスをくださったhoshi-takanori様にベストアンサーを付けたい所なのですが、修正・追記の依頼へのコメントだったためベストアンサーは付けられませんでした。この場を借りて、お礼を申し上げます。
ありがとうございました。

そもそも、質問をした時点で出力されていたログ

2022-03-25 02:02:32.039823+0900 G-Calender[14235:12275928] GTMSessionFetcher invoking fetch callbacks, data {length = 271, bytes = 0x7b0a2020 22737562 223a2022 31313632 ... 3a20226a 61220a7d }, error (null)

これをエラーだと思い込んでしまっていた時点で良くなかったと思います。

・コンソールにはログも出力される場合もあるという事
・print関数にprintするように書いた覚えが無い出力だった事
・Googleへのログインは問題なくできていた事

私は一番上の「コンソールにはログも出力される場合がある」という事が頭に入っていなかったので気づけなかったのですが、振り返ってみるとこの3点を押さえる事ができていれば、この出力はログなのではないかと疑う事もできたと思います。

質問の追記・修正の依頼に提示していただいた以下のURL

https://stackoverflow.com/questions/69688905/stop-hide-gtmsessionfetcher-logs-swiftui

これは私も「GTMSessionFetcher invoking fetch callbacks」という単語でGoogle検索をかけて辿り着いていたのですが、ここで私は原文を読まずに翻訳を読んでしまったため、翻訳された日本語をうまく理解できず、ここでもこれがログであるという事に気付くことができませんでした。

英語が苦手だったので原文を飛ばして翻訳に走ってしまったのですが、原文の英語を見た方がむしろ「ログの下のプリントを隠すか止めるかする方法はありますか?」と読める質問だったので、原文を読んでいたらこれがログなのだと分かったかも知れません。そして、英語が苦手で読みもせずに翻訳に突っ込んでいたら英語力も上がらないと思いました。
今度からは分からなくてもまず原文を読んでみてから、翻訳に行くようにします。

・・・で、この提示されたStackOverflowのページの回答にあるスクリーンショットから「GTMSession_Log_Debug()」という関数が「GTMSessionFetcher.m」というファイルの2608行目付近にあるという事が分かるので、自分のプロジェクトでもその関数を探して、その関数を右クリックからの「Jump to Definition」で、その出力が「デバッグ時にのみ出力されるログ」である事が分かる定義に飛ぶことができたようです。

このStackOverflowの回答と同じようにこの関数をコメントアウトするところまではやってみたのですが、それでもログ自体は消えませんでした。このログ自体を消すのは現在の私の知識では難しいと判断しました。

そして、この「デバッグ時にのみ出力されるログ」であるという事も何となく想像できるような記述ではあったのですが、今の私が明確にそういうものだと判断するのは難しかったと思います。

・・・という事で、「これは単なるログなので気にしない事にする」という結果に落ち着いたわけですが、何はともあれhoshi-takanori様にここまで辛抱強くお付き合いいただけなかったら、私が納得する所まで辿り着けなかったと思います。

重ねて、お礼を申し上げます。
本当にありがとうございました。

投稿2022/04/01 17:45

tmyk1979

総合スコア145

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問