我已经整合了angularx-社会化登录到我的应用程序,以便登录到Facebook。(角11.2.5)一直工作到今天早上很好。我没有做任何更改,但是我开始在控制台中收到这个错误:
ERROR Error: Uncaught (in promise): Error: init not called with valid version
at resolvePromise (zone-evergreen.js:1209:1)
at zone-evergreen.js:1116:1
at angularx-social-login.js:81:1
at ZoneDelegate.invoke (zone-evergreen.js:368:1)
at Object.onInvoke (core.js:28513:1)
at ZoneDelegate.invoke (zone-evergreen.js:367:1)
at Zone.run (zone-evergreen.js:130:1)
at zone-evergreen.js:1272:1
at ZoneDelegate.invokeTask (zone-evergreen.js:402:1)
at Object.onInvokeTask (core.js:28500:1)
在网上查看之后,我发现我不得不更改称为facebook的版本。在我的角度部件中,我试图改变:
this.SocialAuthService.signIn(FacebookLoginProvider.PROVIDER_ID);
致:
const fbLoginOptions = {
scope: 'pages_messaging,pages_messaging_subscriptions,email,pages_show_list,manage_pages',
locale: 'fr_FR',
return_scopes: true,
enable_profile_selector: true,
fields: 'name,email,picture,first_name,last_name,accounts',
version: 'v13.0',
};
this.SocialAuthService.signIn(FacebookLoginProvider.PROVIDER_ID, fbLoginOptions);
但没有成功。
我尝试将它直接包含在app.module.ts中
{
provide: 'SocialAuthServiceConfig',
useValue: {
autoLogin: false,
scope: 'pages_messaging,pages_messaging_subscriptions,email,pages_show_list,manage_pages',
providers: [
{
id: FacebookLoginProvider.PROVIDER_ID,
provider: new FacebookLoginProvider('XXXXXXXXXXX'),
}
],
locale: 'fr_FR',
return_scopes: true,
enable_profile_selector: true,
fields: 'name,email,picture,first_name,last_name,accounts',
version: 'v13.0',
onError: (err) => {
console.error(err);
}
} as SocialAuthServiceConfig,
}
没什么..。
在检查了文件供应商es2015.js之后,我发现了这些信息(我认为这些信息覆盖了我的信息):
class FacebookLoginProvider extends BaseLoginProvider {
constructor(clientId, initOptions = {
scope: 'email,public_profile',
locale: 'en_US',
fields: 'name,email,picture,first_name,last_name',
version: 'v4.0',
}) .....
问题是,此文件是在启动npm构建表时生成的,因此无法直接编辑它。
我还尝试手动添加
<div id="fb-root"></div>
还是什么都没有..。
我还尝试直接编辑文件facebook-login-provider.d.ts:
import { BaseLoginProvider } from '../entities/base-login-provider';
import { SocialUser } from '../entities/social-user';
export declare class FacebookLoginProvider extends
BaseLoginProvider {
private clientId;
private initOptions: {
scope: 'pages_messaging,pages_messaging_subscriptions,email,pages_show_list,manage_pages',
version: 'v14.0',
};
static readonly PROVIDER_ID: string;
constructor(clientId: string, initOptions?: any);
initialize(): Promise<void>;
getLoginStatus(): Promise<SocialUser>;
signIn(signInOptions?: any): Promise<SocialUser>;
signOut(): Promise<void>;
}
那也不管用。
有人知道如何解决这个问题吗?
谢谢。
PS:我意识到还有其他与这个问题有关的帖子,但没有解决的问题。
发布于 2022-07-13 14:12:20
你可能不是唯一有这个问题的人。最有可能的是,facebook-sdk在某种程度上发生了变化,干扰了“angularx-社会化登录”库的正常工作,对库的源代码进行了一些分析(FacebookLoginProvider)。我注意到,FacebookLoginProvider中的init方法只有在动态添加facebook脚本之后才会调用,通过父类BaseLoginProvider的loadScript方法这不会导致任何错误,但是当您试图调用signIn方法时,会生成错误版本的错误(init没有使用有效版本调用),很可能问题是加载了错误的facebook。这很可能很快就会解决,但如果授权对您的站点至关重要,我建议您将facebook sdk加载到index.html中(比如临时解决方案)。
<!-- Load the JS SDK asynchronously -->
<script async defer crossorigin="anonymous" src="https://connect.facebook.net/en_US/sdk.js"></script>
https://stackoverflow.com/questions/72963850
复制相似问题