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

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

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

解決済

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

tmyk1979
tmyk1979

総合スコア132

1回答

0評価

0クリップ

280閲覧

投稿2022/03/24 17:30

編集2022/04/02 02: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

// AppDelegate.Swift import UIKit import GoogleSignIn @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:] ) -> Bool { var handled: Bool handled = GIDSignIn.sharedInstance.handle(url) if handled { return true } // Handle other custom URL types. // If not handled by this app, return false. return false } func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. GIDSignIn.sharedInstance.restorePreviousSignIn { user, error in if error != nil || user == nil { // Show the app's signed-out state. print("ログアウト") } else { // Show the app's signed-in state. print("ログイン") } } return true } // MARK: UISceneSession Lifecycle func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { // Called when a new scene session is being created. // Use this method to select a configuration to create the new scene with. return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) } func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) { // Called when the user discards a scene session. // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. // Use this method to release any resources that were specific to the discarded scenes, as they will not return. } }

Swift

//ViewController.swift import UIKit import GoogleSignIn class ViewController: UIViewController { //xxxxxxxxxはGoogle Cloud Platformで取得したクライアントID let signInConfig = GIDConfiguration.init(clientID: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx") //サインインボタン @IBAction func signIn(sender: Any) { GIDSignIn.sharedInstance.signIn(with: signInConfig, presenting: self) { user, error in guard error == nil else { return } // If sign in succeeded, display the app's main content View. } } //サインアウトボタン @IBAction func signOut(sender: Any) { GIDSignIn.sharedInstance.signOut() } }

認証済みドメインには何を記入したら良いのか分からなかったため、以下の画像のように「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はくまなく目を通して理解しろ」とか、何かしらアドバイスをいただけるとありがたいです。

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

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

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様のおかげで分かりましたが、いずれは自力で 答えにたどり着けるようになりたいです。 今回は本当にありがとうございました!

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る