我正在尝试通过nativescript-social-login插件在Nativescript中实现google的ID提供程序登录,到目前为止,它在Android中运行良好,但在iOS中根本无法运行。
按照插件创建者的指示,我注意到某些类需要用于Typescript的其他定义文件,因此在研究此问题时,我遇到了一个概念,即最近在iOS中使用google登录的方法已更改,并且不赞成使用某些Pod 。我试图遵循新方法,我自己为GIDSignIn委托定义了一个d.ts文件,像这样
declare class GIDSignIn{
public static sharedInstance(): GIDSignIn;
public handleURLSourceApplication(url: NSURL, sourceApplication:NSString, annotiation: id): boolean;
}
但是即使以这种方式编译应用程序,只要点击登录按钮,它就会崩溃。
通过检查xcode中的版本,我会收到一条警告,指出尚未配置Firebase实例,我该如何在Typescript代码中对其进行配置
答案 0 :(得分:0)
使用nativescript-oauth插件进行社交登录。
示例
login.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);
});
}`
在main.ts文件“ Like”中添加google身份验证配置。
`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,仅在App_Resources-> iOS-> info.plist文件中通过google成功通过身份验证后,才添加此代码以进行重定向。
<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>