2016-08-30 7 views
0

私は、私たちのウェブサイトからAPIを使うべきiOSアプリケーションに取り組んでいます。 接続するには、デバイスからGoogleアカウントにログインし、自動的にAPIに接続する必要があります。我々はhttps://developers.google.com/identity/sign-in/ios/start-integrating 承認のために実行時にクライアントIDを変更する、Googleログイン

を使用します。問題は複数のウェブサイトがあり、それぞれに異なるクライアントIDがあることです。

私はプログラム的にCLIENT_IDを格納するの.plistを変更しようとした、それが動作しないでしょう。

@IBAction func signInButtonClicked(sender: AnyObject) { 
    let signInPlistDirectory = *pathToGoogleService-Info.plist* 
    let signInPlist = NSMutableDictionary(contentsOfFile: signInPlistDirectory)! 
    if ((webNodeUrl.text?.hasSuffix(".testing-sites.internal")) != nil) { 
     signInPlist["CLIENT_ID"] = signInPlist["TESTING_CLIENT_ID"] 
    } else { 
     signInPlist["CLIENT_ID"] = signInPlist["PROD_CLIENT_ID"] 
    } 
    signInPlist.writeToFile(signInPlistDirectory, atomically: true) 
} 

たぶん誰もが知っている、それを行うことも可能でしょうか?

答えて

0

マニュアルは、次の言葉:

設定ファイルを作成したときにサービスを追加しなかった場合は、あなたのプロジェクトにコピーする必要はありません。ただし、Xcodeプロジェクトを設定するために必要な情報が含まれているため、構成ファイルは保管しておいてください。

あなたは追加のサービスを使用していないなら、あなたは(私はあなたがあなたの質問の例でやっていることを確信していないこと)plistのを気にしなくても、逃げることができるはずです。私は同じランタイム期間中に複数のクライアント識別子にclientId値を設定しようとしていない、それが文書化されていない

let manager = GIDSignIn.sharedInstance() 
manager.clientId = "CLIENT_ID_YOU_WANT_TO_USE" 
manager.delegate = self 
manager.uiDelegate = self 
manager.shouldFetchBasicProfile = true 
manager.scopes = [ 
    "https://www.googleapis.com/auth/plus.me" 
] 

manager.signIn() 

ログインフォームを提示する前に、次のような何かを試みることができますそれは非常にユニークなユースケースとして機能しますが、それは価値があります。

また、でなければならないことを覚えておいてください。ビルド時にすべてのURLスキームをプロジェクトに追加してください。それ以外の方法はありません。あなたの質問から


、あなたはあなただけの異なる開発環境(PRODとテスト)の間で切り替えたいように見えるのコード例ではしかし、(異なるクライアントIDが付き)複数の異なるウェブサイトを使用したいと言います。この場合、this answerをご覧ください。複数の環境を管理するためのヒントをいくつか提供します。

関連する問題