FacebookImpl.ts 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. export interface IFBLoginRes {
  2. accessToken: string;
  3. /** SDK 返回的用户资料,仅用于展示;服务端仍需验证登录凭证。 */
  4. userId?: string;
  5. name?: string;
  6. /** iOS Limited Login JWT; never use as a Graph API access token. */
  7. authenticationToken?: string;
  8. tokenType?: "access" | "authentication";
  9. nonce?: string;
  10. isCancel: boolean;
  11. status?: string;
  12. reason?: string;
  13. }
  14. export type IFBEventValue = string | number;
  15. export type IFBEventParams = Record<string, IFBEventValue>;
  16. export interface IFBShareOptions {
  17. url: string;
  18. hashtag?: string;
  19. quote?: string;
  20. }
  21. export interface IFBShareRes {
  22. success: boolean;
  23. isCancel: boolean;
  24. postId?: string;
  25. reason?: string;
  26. }
  27. export abstract class FacebookImpl {
  28. private _isInitialized = false;
  29. public get isInitialized() { return this._isInitialized; }
  30. abstract init(): void;
  31. protected onInited() {
  32. this._isInitialized = true;
  33. }
  34. async login(): Promise<IFBLoginRes> {
  35. const res = await this.onLogin();
  36. return res;
  37. }
  38. protected abstract onLogin(): Promise<IFBLoginRes>;
  39. abstract logOut(): Promise<boolean>;
  40. abstract share(options: IFBShareOptions): Promise<IFBShareRes>;
  41. abstract logEvent(
  42. eventName: string,
  43. parameters?: IFBEventParams,
  44. valueToSum?: number,
  45. ): Promise<boolean>;
  46. abstract logPurchase(
  47. amount: number,
  48. currency: string,
  49. parameters?: IFBEventParams,
  50. ): Promise<boolean>;
  51. abstract flushEvents(): Promise<boolean>;
  52. }