Вход в Google не возвращается в мое приложение

У меня возникла проблема с Google Sign-in, которая не перенаправляется обратно в мое приложение.

Я выполнил шаги (https://developers.google.com/identity/sign-in/ios/start-integrating), установил cocoapods, загрузил GoogleService-Info.plist(добавил его ко всем моим цели), добавили типы URL (мой идентификатор пакета, а затем мой обратный идентификатор клиента к моей цели и выполнили шаги по строкам.

Вот исходный код plist CFBundleURLTypes:

<dict>
 <key>CFBundleTypeRole</key>
 <string>Editor</string>
 <key>CFBundleURLSchemes</key>
 <array>
 <string>MY_REVERSE_CLIENT_ID</string>
 </array>
 <key>CFBundleURLName</key>
 <string>MY_BUNDLE_ID</string>
 </dict>
 <dict>
 <key>CFBundleTypeRole</key>
 <string>Editor</string>
 <key>CFBundleURLSchemes</key>
 <array>
 <string>MY_BUNDLE_ID</string>
 </array>
 <key>CFBundleURLName</key>
 <string>MY_BUNDLE_ID</string>
 </dict>

В App Delegate я настроил [GGLContext sharedInstance] и в приложении openURL, который я добавил -

return [[GIDSignIn sharedInstance] handleURL: url                                  sourceApplication: sourceApplication                                         аннотации: аннотации];

Если приложение Google Plus не установлено, сафари открывается в приложении только отлично и после входа в систему методы обратного вызова делегата работают так, как ожидалось.

Я считаю, что это проблема с iOS9. Это работало раньше на iOS8.

Я также добавил com-google-gidconsent и com-google-gidconsent-google в LSApplicationQueriesSchemes в своем plist, так как я увидел еще одно сообщение, в котором говорилось, что это может быть проблемой.

Я проверил, что в портале разработчика Google мой идентификатор пакета совпадает с идентификатором моего пакета проектов, а также идентификатором клиента и обратным идентификатором клиента.

У меня есть три цели (производство, постановка и тестирование). В настоящее время я просто пытаюсь заставить рабочую цель работать.

У меня есть другой контроллер представления, когда пользователь нажимает кнопку Google, а затем действие для этой кнопки [[GIDSignIn sharedInstance] signIn]; Это приведет пользователя к приложению Google Plus и предложит пользователю выбрать учетную запись. После выбора учетной записи приложение google plus затем запрашивает у пользователя, сможет ли мое приложение получить доступ к их информации. Как только пользователь нажимает "ОК", в моем приложении нет обратного вызова. Пользователь просто застрял в приложении Google Plus. У меня есть точка останова в методе openURL приложения, и она никогда не попадает.

Интересно, что если я настрою свой plist с помощью com-google-gidconsent-google и com.google.gidconsent в схемах URL-адресов с моим обратным идентификатором клиента, будет применен метод openURL приложения, но

[[GIDSignIn sharedInstance] handleURL: url                                  sourceApplication: sourceApplication                                         аннотации: аннотации];

имеет значение NO.

Любая помощь будет принята с благодарностью.

2 ответа

Проверьте приложение: openURL: sourceApplication: annotation: method или application: openURL: options: (зависит от того, какой у вас есть в AppDelegate). Должно быть что-то подобное реализовано для схемы URL-адресов google

return [[GIDSignIn sharedInstance] handleURL:url sourceApplication:sourceApplication annotation:annotation];


Я читал, что вы вкладываете в свои схемы схемы. Но в любом случае я поставлю xml (файл plist) с URL-адресами, необходимыми для настройки google plus. Первая строка должна быть тем, что вы найдете на своей консоли разработчика Google в "Схеме URL-адресов iOS" с идентификатором клиента

<key>LSApplicationQueriesSchemes</key>
<array>
<string>com.googleusercontent.apps.123456789012-abcdefghijklmnopqrstuvwxyz</string>
<string>com-google-gidconsent-google</string>
<string>com-google-gidconsent-youtube</string>
<string>com-google-gidconsent</string>
<string>com.google.gppconsent.2.4.1</string>
<string>com.google.gppconsent.2.4.0</string>
<string>googlechrome</string>
<string>googlechrome-x-callback</string>
<string> https://www.googleapis.com/auth/plus.login</string>
</array>

licensed under cc by-sa 3.0 with attribution.