Google+ SDK для iOS Add Signin button программно

Что касается G + docs здесь: https://developers.google.com/+/mobile/ios/sign-in

Кнопка входа в систему может быть добавлена ​​с помощью XIB или программно в UIViewController.

У меня есть TableViewController, и я собираюсь добавить кнопку G + Signin в качестве вспомогательного представления строки таблицы:

subtitleCell.accessoryView = self.googlePlusSignInButton; 

где кнопка ввода будет инициализирована следующим образом:

 -(void) setGooglePlusButtons { self.googlePlusSignInButton = [[UIButton buttonWithType:UIButtonTypeCustom] retain]; UIImage *backgroundButtonImage = [UIImage imageNamed:@"bt_search_cancel.png"]; googlePlusSignInButton_.frame = CGRectMake(0.0f, 0.0f, backgroundButtonImage.size.width, backgroundButtonImage.size.height); googlePlusSignInButton_.titleLabel.textColor = [UIColor whiteColor]; googlePlusSignInButton_.titleLabel.font = [UIFont boldSystemFontOfSize:11.0f]; googlePlusSignInButton_.titleLabel.numberOfLines = 2; googlePlusSignInButton_.titleLabel.shadowColor = [UIColor darkGrayColor]; googlePlusSignInButton_.titleLabel.shadowOffset = CGSizeMake(0.0f, -1.0f); [googlePlusSignInButton_ setTitle:NSLocalizedString(@"UI_BUTTONS_LOGIN", @"") forState:UIControlStateNormal]; [googlePlusSignInButton_ setBackgroundImage:backgroundButtonImage forState:UIControlStateNormal]; // Make sure the GPPSignInButton class is linked in because references from // xib file doesn't count. [GPPSignInButton class]; GPPSignIn *signIn = [GPPSignIn sharedInstance]; signIn.delegate = self; signIn.shouldFetchGoogleUserEmail = signIn.shouldFetchGoogleUserEmail; signIn.actions = [NSArray arrayWithObjects: @"http://schemas.google.com/ListenActivity", nil]; } 

Кнопка установлена ​​в viewDidLoad:

 - (void)viewDidLoad { [super viewDidLoad]; [self setGooglePlusButtons]; //... 

UIViewControlled имеет интерфейс для делегата signin:

 @interface MXMSettingsTableViewController () <GPPSignInDelegate> @end 

Похоже, что делегат не вызывается или кнопка с общим знаком не связана с экземпляром контроллера:

 // GPPSignInDelegate - (void)finishedWithAuth:(GTMOAuth2Authentication *)auth error:(NSError *)error { ///.... } 

Я предполагаю, что

 // Make sure the GPPSignInButton class is linked in because references from // xib file doesn't count. [GPPSignInButton class]; 

связывает кнопку экземпляра ViewController:

 // The button that handles Google+ sign-in. @property (retain, nonatomic) GPPSignInButton *googlePlusSignInButton; 

но что-то не так в этой реализации, я не могу понять.

2 Solutions collect form web for “Google+ SDK для iOS Add Signin button программно”

Прежде всего, вы должны вызывать метод sign в действии вашего googlePlusSignInButton

Таким образом, код должен быть:

 -(void) setGooglePlusButtons { self.googlePlusSignInButton = [[UIButton buttonWithType:UIButtonTypeCustom] retain]; UIImage *backgroundButtonImage = [UIImage imageNamed:@"bt_search_cancel.png"]; googlePlusSignInButton_.frame = CGRectMake(0.0f, 0.0f, backgroundButtonImage.size.width, backgroundButtonImage.size.height); googlePlusSignInButton_.titleLabel.textColor = [UIColor whiteColor]; googlePlusSignInButton_.titleLabel.font = [UIFont boldSystemFontOfSize:11.0f]; googlePlusSignInButton_.titleLabel.numberOfLines = 2; googlePlusSignInButton_.titleLabel.shadowColor = [UIColor darkGrayColor]; googlePlusSignInButton_.titleLabel.shadowOffset = CGSizeMake(0.0f, -1.0f); [googlePlusSignInButton_ setTitle:NSLocalizedString(@"UI_BUTTONS_LOGIN", @"") forState:UIControlStateNormal]; [googlePlusSignInButton_ setBackgroundImage:backgroundButtonImage forState:UIControlStateNormal]; [googlePlusSignInButton addTarget:self action:@selector(signInGoogle:) forControlEvents:UIControlEventTouchUpInside]; } 

и знак должен быть таким:

 - (void)signInGoogle { GPPSignIn *signIn = [GPPSignIn sharedInstance]; signIn.delegate = self; signIn.shouldFetchGoogleUserEmail = YES; signIn.clientID = kClientID; signIn.scopes = [NSArray arrayWithObjects:kGTLAuthScopePlusLogin,nil]; signIn.actions = [NSArray arrayWithObjects:@"http://schemas.google.com/ListenActivity",nil]; [signIn authenticate]; } 

В вашем коде отсутствовал [signIn authenticate]; вызовите, plust вам нужно также передать в clientID, который в приведенном выше фрагменте является постоянным значением (вам нужно объявить это)

Несмотря на несколько решений, не было никакой возможности заставить silentAuthentication работать

 - (void)initialize { // Read Google+ deep-link data. [GPPDeepLink setDelegate:self]; [GPPDeepLink readDeepLinkAfterInstall]; // Setup Google+ share dialog. [GPPShare sharedInstance].delegate = self; // Setup Google+ signin [GPPSignIn sharedInstance].clientID = APP_GOOGLEPLUS_APPID; [GPPSignIn sharedInstance].delegate = self; [GPPSignIn sharedInstance].shouldFetchGoogleUserEmail = YES; [GPPSignIn sharedInstance].shouldFetchGoogleUserID = YES; [GPPSignIn sharedInstance].actions = [NSArray arrayWithObjects:[self momentSchemaByType:MXMGooglePlusMomentListen], nil]; [GPPSignIn sharedInstance].scopes = [NSArray arrayWithObjects:kGTLAuthScopePlusLogin, nil]; // defined in GTLPlusConstants.h [[GPPSignIn sharedInstance] trySilentAuthentication]; shareAfterLogin= NO; trackIdToShare = nil; if([[MXMLogger sharedLogger] isDebug]) { NSLog(@"MXMGooglePlusManager initialize login %d keychain %d", [self isGooglePlusLoggedin], [GPPSignIn sharedInstance].hasAuthInKeychain); } } 

Странная вещь, брелок имеет аутентификацию в

 2013-09-13 13:01:35.849 musiXmatch[1090:790b] MXMGooglePlusManager initialize login 0 keychain 1 

но учетная запись не вошла в систему.

Что касается документов здесь

https://developers.google.com/+/mobile/ios/api/interface_g_p_p_sign_in

реализация должна быть правильной.

  • Как следует начинатьBackgroundTaskWithExpirationHandler: использовать для продолжения существующих задач?
  • Защита учетной записи пользователя Firebase с помощью firebaseSimpleLogin
  • IOS Parse включает ключевой запрос
  • Как реализовать Single Sign On (SSO) с помощью iOS sdk facebook для iphone
  • Не удалось найти дескриптор перечисления PBFieldDescriptorProto_Label при модульном тестировании
  • Установка цвета штриха текста заголовка в внешнем виде UINavigationBar
  • Поворачивайте приложение iOS с помощью MapKit
  • fbDidLogin никогда не вызывал (facebook-ios-sdk)
  • Платежи PayPal как с учетными записями PayPal, так и с кредитными картами на iOS в качестве стороннего продавца
  • FBSession.openActiveSessionWithReadPermissions не вызывает завершениеHandler
  • Google maps iOS SDK уровня подробных полилиний
  • Interesting Posts

    Построить цель, случайно добавленную в схему Xcode

    Добавить сертификат в IOS Keychain в Swift

    Остановка UILocalNotification Звук на слайде для просмотра

    Tesseract OCR iOS сбой для арабского языка

    Скопировать цели из одного проекта Xcode в другой?

    Диалоговое окно jquery ui не отображается на странице с помощью Google Maps v3

    Рендеринг текстур на iOS OpenGL ES-работает на симуляторе, но не на устройстве

    iOS: обратное геокодирование с использованием CLGeocoder Vs. API Google Geocoder

    Чтение данных GPS с изображения, возвращаемого камерой в iOS iphone

    IB Designables: не удалось обновить статус автоматического макета: агент поднял исключение «NSInternalInconsistencyException»: не удалось загрузить NIB в комплекте

    URI в приложении Google+ для iOS?

    UIRotationGestureRecognizer на UIImageview

    Ошибка при попытке отключить MagicalRecord с помощью CocoaPods 0.38

    Пропустить managedObjectContext (основные данные) для других классов, правильно выполнен?

    Отображение UIDatePicker в UIActionSheet при нажатии на UITextField

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.