Как загрузить видео на мою страницу в Facebook с помощью API Graph? - PullRequest
0 голосов
/ 13 октября 2019

Я пытался понять, как интерпретировать полученную документацию здесь и здесь . Я использую Javascript SDK Facebook .

    async postVideo(page: IFacebookPage, videoFile: File): Promise<CreateAdResult> {
        return new Promise<CreateAdResult>(async (resolve, reject) => {
            try {
                const data = new FormData()
                data.append('source', videoFile)
                const result = await this.post(`/${page.id}/videos`, page, { source: data })
                resolve(result)
            } catch (error) { reject(error) }
        })
    }

    private async post(url: string, page: IFacebookPage, params: any): Promise<CreateAdResult> {
        return new Promise<CreateAdResult>(async (resolve, reject) => {
            const accessToken = await this.fetchFaceBookPageAccessToken(page.id)
            this.FB().api(url, "post", { ...params, access_token: accessToken }, (response: any) => {
                if (response && !response.error) {
                    resolve(CreateAdResult.PublishToFacebookSuccess)
                } else {
                    const msg = response && response.error ? `Failed to post content to Facebook page with error: ${response.error.message} ` : `Failed to post ad to Facebook page!`
                    reject(Error(msg)) // <----- Ends up here!!
                }
            })
        })
    }

Все это просто приводит к сообщению об ошибке в форме

Ошибка: не удалось опубликовать контент наСтраница Facebook с ошибкой: при загрузке видеофайла возникла проблема. Пожалуйста, попробуйте еще раз.

1 Ответ

0 голосов
/ 17 октября 2019

Я справился с проблемой, загрузив видео в другое место и предоставив вместо него URL-адрес в Facebook.

Т.е.

async postVideo(page: IFacebookPage, videoUrl: string): Promise<CreateAdResult> {
    return new Promise<CreateAdResult>(async (resolve, reject) => {
        try {
            const result = await this.post(`/${page.id}/videos`, page, { file_url: videoUrl })
            resolve(result)
        } catch (error) { reject(error) }
    })
}
...