| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- import AppConfig from "@scripts/app/AppConfig";
- import { FacebookImpl, IFBLoginRes } from "./FacebookImpl";
- export class FBH5Impl extends FacebookImpl {
- private _isLogined = false;
- init() {
- try {
- //@ts-ignore
- window.fbAsyncInit = () => {
- //@ts-ignore
- FB.init({
- appId: AppConfig.FBAppID,
- cookie: true,
- xfbml: true,
- version: 'v26.0'
- })
- //@ts-ignore
- FB.AppEvents.logPageView();
- console.log("fb sdk init!!!");
- this.onInited();
- };
- const script = document.createElement('script');
- script.id = 'facebook-jssdk';
- script.async = true;
- script.defer = true;
- script.crossOrigin = 'anonymous';
- script.src = 'https://connect.facebook.net/en_US/sdk.js';
- script.onerror = () => {
- console.error('[FaceBook] Facebook JavaScript SDK 下载失败');
- };
- document.head.appendChild(script);
- } catch (e) {
- console.error("[FaceBook]", e);
- }
- this._isLogined = false;
- }
- private async getLoginStatus() {
- return new Promise<boolean>((resolve, reject) => {
- //@ts-ignore
- FB.getLoginStatus(response => {
- console.log('[Facebook] login status:', response);
- this._isLogined = response?.status === 'connected';
- resolve(response?.status === 'connected');
- });
- })
- }
- protected async onLogin() {
- if (this._isLogined) {
- await this.logOut();
- }
- return new Promise<IFBLoginRes>((resolve, reject) => {
- //@ts-ignore
- FB.login(response => {
- console.log('[Facebook] login response: ', response);
- const res: IFBLoginRes = {
- accessToken: "",
- isCancel: false
- }
- if (response.authResponse) {
- res.accessToken = response.authResponse?.accessToken || "";
- }
- this._isLogined = !!res.accessToken;
- if (!res.accessToken) {
- res.isCancel = true;
- }
- resolve(res);
- })
- });
- }
- async logOut() {
- if (!this._isLogined) return true;
- return new Promise<boolean>((resolve, reject) => {
- //@ts-ignore
- FB.logout(response => {
- this._isLogined = false;
- console.log('[Facebook] logout: ', response);
- resolve(true);
- })
- })
- }
- }
|