2016-08-30 5 views
0

Google 웹 사이트에서 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 스키마를 추가해야하며 다른 방법은 없습니다. 귀하의 질문에서


, 당신은 당신이 단지 다른 개발 환경 (자극 테스트) 사이를 전환 할 것 같습니다 코드 예제에서 그러나 (다른 클라이언트 ID의 사용) 여러 다른 웹 사이트를 사용하고자하는 말 . 이 경우라면 this answer을 살펴 보는 것이 좋습니다. 여러 환경을 관리하는 데 유용한 팁을 제공합니다.