2014-11-22 6 views
3

이메일로 웹 페이지 링크를 공유하는 iOS 앱을 작성 중이며, 그 중 일부로 사용자가 Google 플러스에 로그인 할 수있게하고 싶습니다.Google 플러스 xcode 공유 확장에 로그인하십시오.

https://developers.google.com/+/mobile/ios/sign-in

을 지금은 또한 사용자의 구글 + 프로필에 액세스 할 수있는 공유 확장명을 추가하려고 해요 : 여기에서 지침에 포함 된 응용 프로그램 작업 벌금을 가지고있다. 먼저 공유 확장에 로그인 버튼을 추가하려고 시도했지만, 버튼을 클릭하면 브라우저에서 권한을 수락하기 위해 앱을 떠났으므로 작동하지 않을 것이라고 생각합니다. 공유 확장으로 다시 리디렉션 할 수 없습니다 (또는 적어도 길을 찾을 수 없음).

사용자가 로그인하여 메인 (포함) 앱에서 권한을 수락하고 나중에 공유 확장을 사용하고 동일한 프로필로 계속 로그인 할 수 있기를 바랍니다. 나는 공유 확장에서 사용자 지정의 UIViewController를 사용하고, 그리고 첫 번째 시도로 나는 포함하는 응용 프로그램으로 공유 확장에 동일한 클라이언트 ID를 사용하고있는 viewDidLoad 방법이 전화를 시도했다 :

GPPSignIn *signIn = [GPPSignIn sharedInstance]; 
signIn.shouldFetchGooglePlusUser = YES; 
signIn.shouldFetchGoogleUserEmail = YES; 
signIn.clientID = kClientID; 
signIn.scopes = @[ @"profile" ]; 
signIn.delegate = self; 
if ([signIn hasAuthInKeychain]) { 
    NSLog(@"Has auth in keychain"); 
} else { 
    NSLog(@"No auth in keychain"); 
} 
contains app hasAuthInKeychain의

은 true를 반환하지만 공유 확장은 false입니다. 내가 사용하고있는 클라이언트 ID는 메인 앱용 번들에 묶여 있기 때문에 어쨌든 공유 확장에서 사용할 수 있어야할지 모르겠다.하지만 공유를위한 별도의 클라이언트 ID를 만들려고한다면 아마도 승인 절차를 다시 거쳐야할까요?

주 앱의 기존 인증 토큰에 액세스하여 공유 확장 프로그램에서 사용할 수있는 방법이 있습니까?

답변

0

당신은 올바른 길을 가고 있습니다.

앱과 확장 프로그램에서 동일한 키 체인에 액세스하려면 Xcode에서 "키 체인 공유"기능을 활성화해야합니다. 이렇게하면 Xcode는 새로운 기능을 반영해야하기 때문에 앱 ID 및 프로비저닝 프로파일을 업데이트하려고합니다.

이 정도면 Google 프레임 워크가 키 체인을 처리하는 방식에 달려 있습니다. docs for SecItemAdd indicate으로 항목이 기본적으로 처음 나열된 그룹에 추가되기 때문에 일 것입니다.이 필요합니다. 하지만 구글의 코드가 어떻게 작동하는지 모르겠다. 그래서 확신 할 수 없다.

일단 이렇게하면 자격을 올바른 그룹으로 가져 오기 위해 앱을 다시 인증 받아야 할 것입니다. 그 후에도 앱과 확장 프로그램 모두 기존 값을 조회 할 수 있습니다.

+0

사과의 개발자 프로그램에 가입해야이 프로그램을 확인할 수 있었지만 한 번 처리 된 후에는 동일한 키 체인 그룹 이름으로 앱과 확장 프로그램에 키 체인 공유 기능을 추가 할 수있었습니다. 그런 다음 두 곳에서 사용하고있는 GPPSignIn 객체에 동일한 키 체인 이름이 설정되어 있는지 확인해야했습니다. 'signIn.keychainName = @ "signinchainname" 그리고 hasAuthInKeychain이 true를 반환합니다. trySilentAuthentication을 사용하면 auth 객체를 가져올 수 있습니다. 도움 주셔서 감사합니다. –