Ответ 1
1. В Bridging-Header.h
import <GoogleSignIn/GoogleSignIn.h>
import <Google/Core.h>
2. В AppDelegate.swift
import Google
В application:didFinishLaunchingWithOptionslaunchOptions:
настройте объект GGLContext
:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
var configureError: NSError?
GGLContext.sharedInstance().configureWithError(&configureError)
assert(configureError == nil, "Error configuring Google services: \(configureError)")
GIDSignIn.sharedInstance().clientID = "client id"
GIDSignIn.sharedInstance.shouldFetchBasicProfile = true
GIDSignIn.sharedInstance().delegate = self
}
Затем добавьте представление GIDSignInButton
к вашему приложению.
Наконец, в контроллере представления реализуем метод делегата signIn:didSignInForUser:
, который будет вызываться, когда кнопка авторизации tapped:
при авторизации приложения.
- (void)signIn:(GIDSignIn *)signIn
didSignInForUser:(GIDGoogleUser *)user
withError:(NSError *)error {
// Perform any operations on signed in user here.
// ...
}
3. Совместное использование учетных данных между приложениями/расширениями
Когда вы входите в систему Google, вам придется использовать собственные методы iOS для добавления новых учетных данных в Keychain iOS. Таким образом, они будут использовать метод SecItemAdd(_:_:)
, который добавит один или несколько элементов в цепочку ключей.
Чтобы получить доступ к одному и тому же объекту связки ключей как в приложении, так и в расширении, вам необходимо включить "Совместное использование ключей" для приложения и расширения из Xcode Capabilities в настройках вашего проекта. Когда вы это сделаете, Xcode, вероятно, захочет обновить ваши идентификаторы приложений и профили предоставления, поскольку они должны отражать эту новую возможность. Вероятно, вам придется повторно авторизовать приложение (шаг 2), чтобы получить учетные данные в нужную группу.
Документация Apple четко заявляет:
Если вы хотите, чтобы новый элемент keychain был разделен между несколькими приложений, включают ключ kSecAttrAccessGroup в атрибутах Словарь. Значение этого ключа должно быть именем связки ключей группа доступа, к которой относятся все программы, которые будут совместно использовать этот элемент принадлежат.
Когда вы используете Xcode для создания приложения, Xcode добавляет идентификатор приложения-идентификатора к набору приложений. Брелок Услуги используют это право, чтобы предоставить доступ к его собственные элементы связки ключей. Вы также можете добавить группы доступа к цепочке ключей право на подачу заявки и в списке прав собственности файла, укажите массив групп доступа к цепочке ключей, к которым приложение принадлежит.
4. Дополнительные подсказки от Google, о которых я не упоминал выше.
См. "Вход в Google для iOS" .
Вот пример кода для использования GIDSignIn
:
- Получить ссылку на
GIDSignIn
общий экземпляр:GIDSignIn *signIn = [GIDSignIn sharedInstance];
- Задайте области OAuth 2.0, которые вы хотите запросить:
[signIn setScopes:[NSArray arrayWithObject:@"https://www.googleapis.com/auth/plus.login"]];
- Вызов
[signIn setDelegate:self];
- Настроить метод делегата
signIn:didSignInForUser:withError:
. - Вызовите
handleURL
для общего экземпляра изapplication:openUrl:
... в своем делете приложения. - Вызов
signIn
для общего экземпляра;