【问题标题】:Angular2 and Facebook SDK FB.ui dialog closed after clicking nextAngular2 和 Facebook SDK FB.ui 对话框在单击下一步后关闭
【发布时间】:2017-05-05 03:35:34
【问题描述】:

我正在尝试在 angular2 应用程序上使用 Facebook Go Live Dialog 实现 Facebook live。 我有 SDK 工作,它使 api 调用正常,但是当尝试使用 FB.ui 时,对话框不能正常工作,因为对话框的第一个屏幕出现并询问在哪里发布,但是当单击 Next 时,对话框消失,我有没有关于发生的事情的反馈。 (点击下一步应该会显示第二步的另一个对话框)

有什么提示可以解决这个问题吗?

facebooklive.ts

import {Component, OnInit} from '@angular/core';
import {FacebookService, FacebookLoginResponse, FacebookInitParams, 
FacebookApiMethod} from 'ng2-facebook-sdk/dist';

@Component({
...
template : '<button (click)="FBDialog()">Dialog</button>'
providers: [...FacebookService]
})
export class Facebook_live implements OnInit {
constructor(private fb:FacebookService) {
let fbParams:FacebookInitParams = {
appId: 'xxxxx',
xfbml: false,
version: 'v2.8'
};
this.fb.init(fbParams);
}

FBDialog() {
 this.fb.ui(
    {
        display: 'popup',
        method: 'live_broadcast',
        phase: 'create',
    }, function (response) {
        console.log(response);

        if (!response.id) {
            console.log('dialog canceled');
            return;
        }
        console.log('stream url:' + response.secure_stream_url);

        this.fb.ui(
            {
                display: 'popup',
                method: 'live_broadcast',
                phase: 'publish',
                broadcast_data: response,
            },
            function (response) {
                console.log("video status: \n" + response.status);
            });
    });


}

编辑 1: Angular-cli 说 Webpack 现在有效

但几秒钟后出现: [默认] 提供的参数与调用目标的任何签名都不匹配。

我检查了 fb.ui 的 FB SDK,它只要求 2 个参数:FB.ui(params, function(response)),我给了它。

【问题讨论】:

    标签: angular facebook-javascript-sdk facebook-live-api


    【解决方案1】:
    1. 使用 ES6 arrow function =&gt; 否则你将无法在函数中使用 this

    2. ng2-facebook-sdk returnspromise 如果您阅读 README.md,您将看到 ui(params: FacebookUiParams): Promise

    3. 构造函数内部的fb.init不需要this


    import {Component, OnInit} from '@angular/core';
    import {FacebookService, FacebookLoginResponse, FacebookInitParams,
      FacebookApiMethod} from 'ng2-facebook-sdk/dist';
    
    @Component({
      ...
        template : '<button (click)="FBDialog()">Dialog</button>'
        providers: [...FacebookService]
    })
    export class Facebook_live implements OnInit {
    
    
      constructor(private fb:FacebookService) {
        let fbParams:FacebookInitParams = {
          appId: 'xxxxx',
          xfbml: false,
          version: 'v2.8'
        };
        fb.init(fbParams);
      }
    
      FBDialog() {
        this.fb.ui(
          {
            display: 'popup',
            method: 'live_broadcast',
            phase: 'create',
          })
          .then(
            (response) => {
              if (!response.id) {
                console.log('dialog canceled');
                return;
              }
    
              console.log('stream url:' + response.secure_stream_url);
    
              this.fb.ui(
                {
                  display: 'popup',
                  method: 'live_broadcast',
                  phase: 'publish',
                  broadcast_data: response,
                }).then(
                (response) => {
                console.log("video status: \n" + response.status);
              },
              (error: any) => console.error(error)
              );
    
    
          },
          (error: any) => console.error(error)
        );
      }
    
    }
    

    【讨论】:

    • 你是对的,但它仍然不起作用。好像没有触发函数的回调,我点击NEXT,对话框没有反馈就关闭了。
    • 刚刚查看了 ng2-facebook-sdk API,它返回了一个承诺,我会更新代码。
    • @CristianSepulveda 我已经用我发现的问题和更正的代码更新了我的答案。
    • 太棒了,现在使用承诺对话框可以工作并显示第二步,但 ng-cli 显示一个新错误:Argument of type '{ display: string; method: string; phase: string; }' is not assignable to parameter of type 'FacebookUiParams'. 阅读 ng2-facebook-sdk 的自述文件FacebookUiParams 没有规范。我仍然无法获得响应值,我需要响应中应该出现的 response.secure_stream_url
    • 你可以在这里看到拉取请求 github.com/zyramedia/ng2-facebook-sdk/pull/33 和提交的更改在这里 github.com/zyramedia/ng2-facebook-sdk/pull/33/commits/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多