首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >angularx-社会化登录Facebook返回“错误: init未被有效版本调用”

angularx-社会化登录Facebook返回“错误: init未被有效版本调用”
EN

Stack Overflow用户
提问于 2022-07-13 09:22:38
回答 1查看 460关注 0票数 0

我已经整合了angularx-社会化登录到我的应用程序,以便登录到Facebook。(角11.2.5)一直工作到今天早上很好。我没有做任何更改,但是我开始在控制台中收到这个错误:

代码语言:javascript
运行
复制
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的版本。在我的角度部件中,我试图改变:

代码语言:javascript
运行
复制
this.SocialAuthService.signIn(FacebookLoginProvider.PROVIDER_ID);

致:

代码语言:javascript
运行
复制
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中

代码语言:javascript
运行
复制
{
        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之后,我发现了这些信息(我认为这些信息覆盖了我的信息):

代码语言:javascript
运行
复制
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构建表时生成的,因此无法直接编辑它。

我还尝试手动添加

代码语言:javascript
运行
复制
<div id="fb-root"></div>

还是什么都没有..。

我还尝试直接编辑文件facebook-login-provider.d.ts:

代码语言:javascript
运行
复制
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:我意识到还有其他与这个问题有关的帖子,但没有解决的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-13 14:12:20

你可能不是唯一有这个问题的人。最有可能的是,facebook-sdk在某种程度上发生了变化,干扰了“angularx-社会化登录”库的正常工作,对库的源代码进行了一些分析(FacebookLoginProvider)。我注意到,FacebookLoginProvider中的init方法只有在动态添加facebook脚本之后才会调用,通过父类BaseLoginProvider的loadScript方法这不会导致任何错误,但是当您试图调用signIn方法时,会生成错误版本的错误(init没有使用有效版本调用),很可能问题是加载了错误的facebook。这很可能很快就会解决,但如果授权对您的站点至关重要,我建议您将facebook sdk加载到index.html中(比如临时解决方案)。

代码语言:javascript
运行
复制
  <!-- Load the JS SDK asynchronously -->
  <script async defer crossorigin="anonymous" src="https://connect.facebook.net/en_US/sdk.js"></script>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72963850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档