Facebook <-> Blitzmax

Übersicht Sonstiges Smalltalk

Neue Antwort erstellen

ChaosCoder

Betreff: Facebook <-> Blitzmax

BeitragDo, Aug 19, 2010 18:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallöchen,

ich hab nicht viel Zeit und versuche mich mal kurz zu fassen:

Es gibt ja Anwendungen wie Twitter, etc. die sich mit Facebook "connecten" lassen - das heißt, dass sie die Profildaten des Anwenders übermittelt bekommen und sogar Zugriff auf das Posten von neuen Nachrichten/Pinnwandeinträgen erhalten.
Ich wollte mal fragen ob sich hier jemand damit auskennt, bzw. schonmal in diese Richtung was versucht hat. Wollte nämlich mein Spiel RetroWars optional mit Facebook verknüpfen lassen. (Bitte kein geflame, dass das totaler Müll ist)

Wie müsste sowas gehen? Diese Authentifizierung mit dem Facebook-Server geht leider nur mittels HTTPS und ich selbst habe es nicht geschafft das zu realisieren (auch nicht mit Brucey's-Modul, denn der Server faselt nach ein paar Redirections was davon, dass mein "Browser" kein Javascript kann und bricht ab - ohne mir einen Schlüssel zu liefern.

Hat jemand Erfahrung in soetwas? Ratschläge, Tipps wie man das umsetzen müsste?

Liebe Grüße
Projekte: Geolaria | aNemy
Webseite: chaosspace.de
 

FWeinb

ehemals "ich"

BeitragDo, Aug 19, 2010 18:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe mich mal beim Google Reader über die API und https mithilfe der libcurlssl von Brucey angemeldet, und hatte keine Probleme. Wenn du noch Hilfe brauchst, schreib mir einfach eine PN.

MfG
ich
"Wenn die Menschen nur über das sprächen, was sie begreifen, dann würde es sehr still auf der Welt sein." Albert Einstein (1879-1955)
"If you live each day as if it was your last, someday you'll most certainly be right." Steve Jobs

sirokuhl

BeitragDo, Aug 19, 2010 18:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielleicht findest du ja hier etwas nützliches dazu? http://developers.facebook.com/

The Shark

BeitragDo, Aug 19, 2010 19:05
Antworten mit Zitat
Benutzer-Profile anzeigen
genauergesagt hier: http://developers.facebook.com/docs/api
aber den link kennst du wahrscheinlich schon.

Starwar

BeitragDo, Aug 19, 2010 20:52
Antworten mit Zitat
Benutzer-Profile anzeigen
noch genauer:
http://developers.facebook.com...ntication/
noch mehr genauer:
http://developers.facebook.com...on/desktop

Als Zusammenfassung: Autentifizierung nur über eine von Facebook zur Verfügung gestellte HTML-Seite.
MFG
 

FWeinb

ehemals "ich"

BeitragDo, Aug 19, 2010 22:26
Antworten mit Zitat
Benutzer-Profile anzeigen
So es hat mich jetzt doch gereizt es hinzubekommen. Die Doku ist leider nicht ganz Vollständig aber der Code tut es jetzt. Das ganze setzt aber die Verwendung der MaxGui Vorraus.
BlitzMax: [AUSKLAPPEN]
SuperStrict

Import MaxGui.drivers

Global GetAcc:Byte = 0
Const Client_ID:String = "XXXX" 'Client_ID
Const Client_Sec:String = "XXXX" 'Client_Secret

AppTitle = "Facebook Test"

Local MyWindow:TGadget = CreateWindow(AppTitle, 0,0,300,400,Null,WINDOW_TITLEBAR|WINDOW_CENTER|WINDOW_RESIZABLE)
Local HTMLView:TGadget = CreateHTMLView(0,0,300,370,MyWindow,HTMLVIEW_NONAVIGATE)
SetGadgetLayout htmlview,1,1,1,1

NSSetText TNSGadget(HTMLView),"https://graph.facebook.com/oauth/authorize?client_id="+Client_ID+"&redirect_uri=http://www.facebook.com/connect/login_success.html&Type=user_agent&display=popup"
'Kann die Funktion HTMLViewGo nicht benutzten, da ich https! brauche.

Local Timer:TTimer = CreateTimer(3)

Repeat
WaitEvent()
Select EventID()
Case EVENT_APPTERMINATE, EVENT_WINDOWCLOSE
End
Case EVENT_GADGETACTION
Select EventSource()
Case HTMLView
Print EventText()
End Select
Case EVENT_GADGETDONE
Select EventSource()
Case HTMLView
If GetAcc = 1 Then
Local Token:String = HtmlView.Run("function GetPage(){return document.getElementsByTagName('PRE').item(0).innerHTML;} GetPage();")
Token = Token[13..Token.Find("&")]
Print "Get some User-Informations"
Print "https://graph.facebook.com/me?access_token="+Token
NSSetText TNSGadget(HTMLView),"https://graph.facebook.com/me?access_token="+Token.Replace("|","%7C") 'Bisschen URL-Encoding
GetAcc = 0
EndIf
End Select
Case EVENT_TIMERTICK
Local Title:String = HtmlView.Run("function GetTitle(){return document.title;} GetTitle();")
If Title = "Success" Then
GetAcc = 1
Local Code:String = String(HtmlView.Run("function GetHref(){return window.location.href;} GetHref();"))[56..]
Local Link:String = "https://graph.facebook.com/oauth/access_token?client_id="+Client_ID+"&client_secret="+Client_Sec+"&code="+Code+"&redirect_uri=http://www.facebook.com/connect/login_success.html"
NSSetText TNSGadget(HTMLView),Link
EndIf
End Select
Forever


Das ganze ist jetzt nicht schön geworden aber es Funktioniert. Wenn alles glatt geht, dann Zeigt das Teil die Profildaten im JSON-Format an.

Wenn du Hilfe beim Einbauen brauchst, dann schreibe mir einfach eine PN.

MfG
ich
"Wenn die Menschen nur über das sprächen, was sie begreifen, dann würde es sehr still auf der Welt sein." Albert Einstein (1879-1955)
"If you live each day as if it was your last, someday you'll most certainly be right." Steve Jobs

ChaosCoder

BeitragDo, Aug 19, 2010 23:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Wow ich, hatte es mit dem HTMLViewGo probiert und festgestellt, dass https nicht geht - abe rich wusste nicht, dass es einen so einfachen Workaround gibt!

Aber sag mal, war das Application Secret nicht wie der Name schon sagt, geheim? Das heißt diese Methode eignet sich garnicht zur client-server sondern eher zur server-server authentication?

Nun gut, hab mich noch ein wenig mehr durch die API gekämpft und werde jetzt den Umweg über PHP machen, das ist dann hoffentlich sicherer.

Edit:
@Alle anderen: Danke für eure Tipps, die Developer-Seiten kannte ich natürlich schon, aber danke für eure Mühe! Smile
Projekte: Geolaria | aNemy
Webseite: chaosspace.de
 

FWeinb

ehemals "ich"

BeitragSo, Aug 22, 2010 13:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine frage:
Du Sagst, dass es unsicher sei mit dem App_Secret eine Client-Server Authentication zu machen, aber das ganze läuft doch über SSL dürfte doch so gesehen eigentlich nichts machen, oder habe ich da einen Denkfehler?


Gruß,
Ich
"Wenn die Menschen nur über das sprächen, was sie begreifen, dann würde es sehr still auf der Welt sein." Albert Einstein (1879-1955)
"If you live each day as if it was your last, someday you'll most certainly be right." Steve Jobs

ChaosCoder

BeitragSo, Aug 22, 2010 14:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast Recht, ich wusste nicht, dass wenn man ein HTTP Request an die Seite
Zitat:
https://graph.facebook.com/oau...secret=xyz
über https schickt, dass der komplette Header verschlüsselt wird. Ich dachte die GET-Variablen wären immernoch offen sichtbar. Dann ist das natürlich richtig super. Smile

Danke dir für den Hinweis.

EDIT:
Obwohl, wenn man so drüber nachdenkt... Wenn der String mit dem Client_Secret in der Datei ist, kann man den ja auch einfach extrahieren... Auch wenn das wahrscheinlich bei meienr Anwendung kaum einer machen wird, unsicher ist es trotzdem. (Selbst wenn man es verschlüsselt, denn dann ist ja das Passwort für die Verschlüsselung ebenfalls im Assemblercode)

Smily

BeitragSo, Aug 22, 2010 14:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Natürlich ist das verschlüsselt. Allerdings nur so, dass jemand, der "zwischendrin" sitzt, nicht weis, was du sendest oder empfängst. Der Client weis natürlich, was er sendet Wink also kann jeder, der auf den PC zugreifen kann, auch bei HTTPS herausfinden, was da geschickt wird. Egal wie du es anstellst.

Grüße,
Micha
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

ChaosCoder

BeitragSo, Aug 22, 2010 14:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Jopp, deshalb lager ich das jetzt auf ein PHP-Script um, das das Client_Secret kennt und mit Facebook kommuniziert. Das Scirpt wird dann den "Access_Token" zurücliefern, mit dem die Anwendung dnan Daten abfragen kann etc. Smile

Ich denke diese Lösung ist passend.
Projekte: Geolaria | aNemy
Webseite: chaosspace.de
 

FWeinb

ehemals "ich"

BeitragMo, Aug 23, 2010 12:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, so kann man es dann auch machen. Nach der Dokumentation sollte dass ja auch eigentlich gehen, nur leider scheint das Login für Desktop Applications etwas kaputt zu sein. Hatte nie die #access_token in der URL.


MfG
ich

PS: Zu meinem Code, der wird nur auf dem Mac funktioniere, da ich NSSetText Benutze und es diese Funktion in der MaxGui auf Windows sicherlich nicht geben wird.
"Wenn die Menschen nur über das sprächen, was sie begreifen, dann würde es sehr still auf der Welt sein." Albert Einstein (1879-1955)
"If you live each day as if it was your last, someday you'll most certainly be right." Steve Jobs

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group