Загрузка фотографий в альбом Facebook через Facebook C # SDK - PullRequest
0 голосов
/ 13 марта 2012

Я пытаюсь загрузить фотографии в альбом Facebook с помощью Facebook C # SDK ver. 5.4.1.0, но по-прежнему происходит сбой со следующей ошибкой: «OAuthException) (# 200) Приложение не имеет возможности сделать этот вызов API.»

Я пытаюсь достичь:

  • Получить Facebook PageID для определенной страницы, администратором которой я являюсь
  • Создать альбом изображений на этой странице
  • Загрузить фотографии в этот альбом

Пока мне удалось получить токен доступа для этой страницы и создать альбом на этой странице

Код:

    Protected Sub Button2_Click(sender As Object, e As System.EventArgs) Handles Button2.Click


    Dim fb As New Facebook.FacebookClient("MyAccessToken")
    Dim dic As IDictionary(Of String, Object) = DirectCast(fb.Get("/me/accounts"), IDictionary(Of String, Object)) 'List of all my pages
    Dim dicy As IList(Of Object) = DirectCast(dic("data"), IList(Of Object)) 'cast the Data part of JSON to list
    Dim page As IDictionary(Of String, Object)      'Individual item inside the dicy :)
    For i As Integer = 0 To dicy.Count - 1
        page = DirectCast(dicy(i), IDictionary(Of String, Object))
        If page("id") = PageID Then 'try to match given PageID with the one in the list
            fb.AccessToken = page("access_token") 'change access token to the one of the page
            Exit For
        End If


    Next

    'Create an album
    Dim fbparams As New Dictionary(Of String, Object)
    fbparams.Add("message", "New album")
    fbparams.Add("name", "my album name")
    'post to Facebook and get the AlbumID
    Dim Album As Facebook.JsonObject = fb.Post("/me/albums", fbparams)

    'try to upload photos
    Call UploadPhotoToAlbum(fb, Album(0).ToString, Server.MapPath("~/myimage.jpg"))
End Sub

И код, который загружает файл:

    Private Sub UploadPhotoToAlbum(ByVal fbApp As Facebook.FacebookClient, ByVal AlbumID As String, ByVal ImagePath As String)
    Dim media As New Facebook.FacebookMediaObject
    media.ContentType = "image/jpeg"
    media.FileName = ImagePath

    Dim filebytes As Byte() = System.IO.File.ReadAllBytes(ImagePath)
    media.SetValue(filebytes)
    Dim upload As New Dictionary(Of String, Object)
    upload.Add("name", "Picture No 1")
    upload.Add("message", "This is my first uploaded image")
    upload.Add("@file.jpg", media)
    fbApp.Post("/" & AlbumID, upload)
End Sub

Мое приложение имеет следующие разрешения: create_note manage_pages offline_access photo_upload publish_stream read_stream share_item status_update user_photo_video_tags user_photos user_videos video_upload

1 Ответ

3 голосов
/ 15 марта 2012

Решил, нашел решение здесь

Я забыл поставить "/ photos" в последнем предложении fbApp.Post.

...