Я пытаюсь реализовать вход в систему поставщика идентификаторов Google в Nativescript через плагин nativescript-social-login, пока он хорошо работает в Android, но совсем не работает в iOS.
Следуя инструкциям создателя плагина, я заметил, что некоторым классам требуются дополнительные файлы определения для машинописного текста, поэтому, исследуя проблему, я пришел к выводу, что подход к входу в систему с помощью Google недавно изменился в iOS, а некоторые модули устарели. Я попытался следовать новому методу, я сам определил файл d.ts для делегата GIDSignIn, подобный этому
declare class GIDSignIn{
public static sharedInstance(): GIDSignIn;
public handleURLSourceApplication(url: NSURL, sourceApplication:NSString, annotiation: id): boolean;
}
Но даже если приложение компилируется таким образом, оно вылетает, как только я нажимаю кнопку входа.
Проверяя сборку в xcode, я получаю предупреждение о том, что экземпляр Firebase не настроен, как мне настроить его в коде Typescript





Используйте плагин nativescript-oauth для входа в соц.
Example
логин.component.ts:-
`import * as tnsOAuthModule from 'nativescript-oauth';
public login() {
tnsOAuthModule.login()
.then(() => {
let tokenModule = JSON.stringify(tnsOAuthModule);
let refereshToken = JSON.parse(tokenModule).instance.tokenResult.refreshToken;
this.getRefereshActiveToken(refereshToken);
})
.catch((er) => {
console.error('error logging in');
console.dir(er);
});
}`
Add google authentication configuration in main.ts file Like.
`import * as tnsOAuthModule from 'nativescript-oauth';
var myInitOptions: tnsOAuthModule.ITnsOAuthCredentials = {
authority: '',
authorizeEndpoint: '',
tokenEndpoint: '',
clientId: '',
redirectUri: 'urn:ietf:wg:oauth:2.0:oob',
responseType: "code",
scope: 'openid',
};
tnsOAuthModule.initCustom({
credentials: myInitOptions,
cookieDomains: ['http://demoweb.net'],
});`
Для IOS добавьте этот код только для перенаправления после успешной аутентификации в Google в файле App_Resources -> iOS -> info.plist.
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>app_id</string>
<key>CFBundleURLSchemes</key>
<array>
<string>appauth</string>
</array>
</dict>
</array>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
Можете ли вы поделиться минимальным примером проекта, в котором проблема может быть воспроизведена? Между ними есть другие плагины, такие как nativescript-плагин-firebase или родной скрипт-oauth2, которые также реализуют Google SignIn.