2013-05-17 4 views
1

Нужна помощь в публикации на странице в facebook. Я использовал эту статью Post on Facebook User's wall , и она работает. Тем не менее, место, где я пытаюсь опубликовать, - это не стена для людей, а вместо этого, когда пользователь входит в книгу лиц, и вы нажимаете на символ шестеренки в правом верхнем углу, он говорит: «Используйте Facebook как: ThingX», а затем они выбирают ThingX. Это выводит их на страницу ThingX, и именно там я хочу отправить сообщение. В коде, если я вхожу в систему как человек, он отправляется на их стену, а не в ThingX. Как отправить сообщение на стену ThingX.Публикация Facebook на странице, а не на стене пользователя

я передаю в publish_stream, manage_pages как код .. я не знаю, если мне нужно сделать что-то другое там ..

Вот код, который я использую сейчас .. VB. нетто

Dim app_id As String = "xxxxxxxxxxxx" 
    Dim app_secret As String = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx" 
    Dim scope As String = "publish_stream,manage_pages" 

    If Request("code") Is Nothing Then 
     Response.Redirect(String.Format("https://graph.facebook.com/oauth/authorize?client_id={0}&redirect_uri={1}&scope={2}", app_id, Request.Url.AbsoluteUri, scope)) 
    Else 
     Dim tokens As New Dictionary(Of String, String)() 

     Dim url As String = String.Format("https://graph.facebook.com/oauth/access_token?client_id={0}&redirect_uri={1}&scope={2}&code={3}&client_secret={4}", app_id, Request.Url.AbsoluteUri, scope, Request("code").ToString(), app_secret) 

     Dim request__1 As HttpWebRequest = TryCast(WebRequest.Create(url), HttpWebRequest) 

     Using response__2 As HttpWebResponse = TryCast(request__1.GetResponse(), HttpWebResponse) 
      Dim reader As New StreamReader(response__2.GetResponseStream()) 

      Dim vals As String = reader.ReadToEnd() 

      For Each token As String In vals.Split("&"c) 
       'meh.aspx?token1=steve&token2=jake&... 
       tokens.Add(token.Substring(0, token.IndexOf("=")), token.Substring(token.IndexOf("=") + 1, token.Length - token.IndexOf("=") - 1)) 
      Next 
     End Using 

     Dim access_token As String = tokens("access_token") 

     Dim client = New FacebookClient(access_token) 

     client.Post("/me/feed", New With { _ 
     Key .message = "This is a test message -- " & Now.ToShortTimeString _ 
     }) 
    End If 

интересно, может ли кто-нибудь протянуть руку. благодаря Shannon

~~~~~~~~~~~~~~~~~~~~~~~~~ Понял работает .. код ниже Ну .. я наконец получил эту работу, где я мог бы опубликовать на странице пользователей. Чтобы дать кредит, где кредит должен быть. http://www.markhagan.me/Samples/Grant-Access-And-Post-As-Facebook-User-ASPNet дал мне часть пути .., а затем автор этой ссылки был достаточно любезен, чтобы помочь мне добраться до конца. Я использовал Newtonsoft, чтобы помочь мне с некоторыми работами JSon. Вот код. Надеюсь, он может помочь кому-то еще ... и еще раз спасибо Марк.

offline_access позволяет создать токен, который не истечет.

Dim app_id As String = "your app id" 
    Dim app_secret As String = "your app secret" 
    Dim scope As String = "publish_stream,manage_pages,offline_access" 




    If Request("code") Is Nothing Then 
     Response.Redirect(String.Format("https://graph.facebook.com/oauth/authorize?client_id={0}&redirect_uri={1}&scope={2}", app_id, Request.Url.AbsoluteUri, scope)) 
    Else 
     Dim tokens As New Dictionary(Of String, String)() 
     Dim url As String = String.Format("https://graph.facebook.com/oauth/access_token?client_id={0}&redirect_uri={1}&scope={2}&code={3}&client_secret={4}", app_id, Request.Url.AbsoluteUri, scope, Request("code").ToString(), app_secret) 
     Dim request__1 As HttpWebRequest = TryCast(WebRequest.Create(url), HttpWebRequest) 

      Using response__2 As HttpWebResponse = TryCast(request__1.GetResponse(), HttpWebResponse) 
      Dim reader As New StreamReader(response__2.GetResponseStream()) 

      Dim vals As String = reader.ReadToEnd() 

      For Each token As String In vals.Split("&"c) 
         tokens.Add(token.Substring(0, token.IndexOf("=")), token.Substring(token.IndexOf("=") + 1, token.Length - token.IndexOf("=") - 1)) 
      Next 
     End Using 

    Try 
     Dim access_token As String = tokens("access_token") 

     Dim client = New FacebookClient(access_token) 

     ' <-- put your USER access token here 
     Dim p As JsonObject = CType(client.[Get]("/me/accounts"), JsonObject) 

     Dim acc As jsondata = Newtonsoft.Json.JsonConvert.DeserializeObject(Of jsondata)(p.ToString) 
     Dim accData As New List(Of AccountData) 
     accData = acc.data 


     Dim mList = From w In accData _ 
        Where w.ID = CStr("your id value that came back through JSON) _ 
        Select w 

     Dim selected As New AccountData 

     For Each selected In mList.ToList 
     Next 

     Dim postparameters = New Dictionary(Of String, Object)() 
     postparameters("message") = Me.txtText.Text 

     Dim client1 = New FacebookClient(selected.access_token) 
     Dim result = DirectCast(client1.Post("/me/feed", postparameters), IDictionary(Of String, Object)) 

     Dim postid = DirectCast(result("id"), String) 
     Return String.Empty 
    Catch ex As Exception 
     Return ex.Message.ToString 
    End Try 
    End If 

вам также понадобится эти два класса

Private Class AccountData 
    Public Property Name As String 
    Public Property Category As String 
    Public Property ID As String 
    Public Property access_token As String 
End Class 
Private Class jsondata 
    Public Property data As New List(Of AccountData) 
End Class 

ответ

1

Ну ... Вы отправляете на "/ Me/канал", which'll фиде человека. Чтобы отправить сообщение на стену другого пользователя или страницы, вам нужно отправить сообщение на идентификатор страниц.

https://developers.facebook.com/docs/reference/api/publishing/

Цитата:

You can publish to quite a few different kinds of objects via the Graph API: 

Method Description Arguments 
/PROFILE_ID/feed Publish a new post on the given profile's timeline. Note: requires publish permissions for the targeted profile. message, picture, link, name, caption, description, source, place, tags 
/OBJECT_ID/comments Comment on the given object (if it has a /comments connection) 
and so on.. 
+0

извините за мое невежество .. термины я использую со ссылкой на Facebook мой быть далеко. Мне нужно создать приложение для страницы ThingX. Я попробовал на ThingX странице, чтобы перейти к разработчику, но он хочет, чтобы я пошел туда, как зарегистрированный пользователь .. имеет смысл, я думаю .. но я не уверен, что мне нужно иметь приложение, созданное на странице ThingX. Если нет, вы говорите, что я могу использовать приложение, которое я уже создал и опубликовал на странице ThingX .. но как узнать, что такое PROFILE_ID ThingX. еще раз, спасибо за помощь – jvcoach23

+0

Просто зайдите на страницу facebook и поместите «график». перед ним, например. «http://graph.facebook.com/CrystalicBandOfficial» вместо «https://www.facebook.com/CrystalicBandOfficial». Вы вернете свой идентификатор в возвращаемом объекте json. – Michael

Смежные вопросы