Quantcast
Channel: ppedv Team Blog
Viewing all articles
Browse latest Browse all 1198

Facebook Status Post per Graph API in ASP.NET

$
0
0

Ehrlich gesagt, habe ich ein wenig Frust über DOTNETOPENAUTH. Die Abstraktion versteckt einige Details ein Blick in den Source Code reicht nicht, also einfach mal die Facebook Doku angesehen und ganz alte HTTP Requests ausgeführt. Es gibt nicht eine API es gibt mehrere.

Zunächst muss man sich authentifizieren. Das geschieht per URL

   1:   Response.Redirect(
String.Format("https://graph.facebook.com/oauth/authorize?client_id={0}&redirect_uri={1}&scope={2}",
   2:                    ConfigurationManager.AppSettings("appkey"), Request.Url.AbsoluteUri, scope))

 

Darin enthalten die übliche APPID und Secret (kommt hier aus der Web Config) und die benötigten Rechte im Querystring scope. Statt Stream_publish nehme ich publish_actions,offline_access. Letzters um den Access_token länger gültig zu bekommen.

Facebook wechselt dann die API von Graph auf Dialog (#19) um die Anmeldung bei Facebook durchzuführen. Wenn der Benutzer mit diesen Browser angemeldet ist, wird er den Dialog nicht sehen.

image

Als nächstes ist wieder die eigene Website dran und erhält einen Code den man auswerten kann. Damit geht man dann zu Facebook und holt sich den Access Token (#22), der als Text geliefert  und in Code Zeile 17 und ff zerlegt wird.

MIt dem Token kann man dann den Post in die eigen Timeline ausführen (#23 und Zeile 25 im VB.NET Sample)

   1:  If Request("code") IsNothingThen
   2:   
   3:  Else
   4:  Dim tokens AsNew Dictionary(Of String, String)()
   5:   
   6:  Dim url AsString = String.Format("https://graph.facebook.com/oauth/access_token?
client_id={0}&redirect_uri={1}&scope={2}&code={3}&client_secret={4}"
,
   7:                                                ConfigurationManager.AppSettings("appkey"),
   8:                                                Request.Url.AbsoluteUri,
   9:                                                scope,
  10:                                                Request.QueryString("code"),
  11:                                                ConfigurationManager.AppSettings("secret"))
  12:   
  13:  Dim req As HttpWebRequest = TryCast(WebRequest.Create(url), HttpWebRequest)
  14:              Using resp As HttpWebResponse = TryCast(req.GetResponse(), HttpWebResponse)
  15:  Dim reader AsNew StreamReader(resp.GetResponseStream())
  16:  Dim vals AsString = reader.ReadToEnd()
  17:  ForEach token AsStringIn vals.Split("&"c)
  18:                      tokens.Add(token.Substring(0, token.IndexOf("=")),
token.Substring(token.IndexOf("=") + 1, token.Length - token.IndexOf("=") - 1))
  19:  Next
  20:   
  21:  End Using
  22:  Dim access_token AsString = tokens("access_token")
  23:  Dim client = New FacebookClient(access_token)
  24:   
  25:              client.Post("/me/feed", NewWith {
  26:                  .message = "Hallo Welt-ich teste nur ", .privacy = NewWith {.value = "SELF"}})
  27:  End If

Damit ich meine Facebook Freunde nicht nerve, habe ich die SIchtbarkeit auf mich beschränkt.

image


Viewing all articles
Browse latest Browse all 1198

Trending Articles


Vimeo 10.7.1 by Vimeo.com, Inc.


UPDATE SC IDOL: TWO BECOME ONE


KASAMBAHAY BILL IN THE HOUSE


Girasoles para colorear


Presence Quotes – Positive Quotes


EASY COME, EASY GO


Love with Heart Breaking Quotes


Re:Mutton Pies (lleechef)


Ka longiing longsem kaba skhem bad kaba khlain ka pynlong kein ia ka...


Vimeo 10.7.0 by Vimeo.com, Inc.


FORECLOSURE OF REAL ESTATE MORTGAGE


FORTUITOUS EVENT


Pokemon para colorear


Sapos para colorear


Smile Quotes


Letting Go Quotes


Love Song lyrics that marks your Heart


RE: Mutton Pies (frankie241)


Hato lada ym dei namar ka jingpyrshah jong U JJM Nichols Roy (Bah Joy) ngin...


Long Distance Relationship Tagalog Love Quotes