aicher1998
Goto Top

Facebook-Login via Visual Basic POST

Hallo,

ich möchte mich über einen HTTP-Post bei Facebook einloggen. Ich hab mir eine eigene POST-Klasse geschrieben, die nicht das Problem verurscht.
Mein Problem ist, dass ich bei Facebook ständig die Meldung bekomme:
1c8f8fcdcb1bc1aad32928aff1bb6045

An was liegt das? Der Cookie wird definitiv übertragen!

Mein bisheriger Code ist:

NetFunctions ist meine Klasse. Der Fehler liegt nicht in dieser Klasse.

Dim nf As New NetFunctions.HttpPost
        nf.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:42.0) Gecko/20100101 Firefox/42.0"  
        nf.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"  

        nf.GetResponse("https://www.facebook.com/") 'Cookie holen  

        nf.Referer = "https://www.facebook.com/?_rdr"  

        Const email As String = "..."  
        Const pass As String = "..."  

        Dim data As String = "lsd=AVomwEE8&email=" & email & "&pass=" & pass & "loginbutton=Anmelden"  

        data = data.Replace("@", "%40").Replace("!", "%21") 'Ich erseze bloß  mal die zwei Zeichen, da diese zwei vorkommen  

        Dim resp As String = nf.POST("https://www.facebook.com/login.php?login_attempt=1&lwv=100", data)  

Ach ja: Auf ein WebbrowserControl möchte ich nicht zurückgreifen müssen.
Was mach ich falsch?
Ich wäre euch sehr dankbar, wenn ihr mir da helfen könntet!

Mit freudlichen Grüßen,
Aicher

// EDIT:
Hab jetzt diese Seite hier gefunden. Klimgt vielversprechend, funktioniert aber auch nicht.
Es wird eine HTML-Datei erstellt, in der man zu debug-zwecken schaun kann, welche Response man bekommen hat (mir ist klar, dass das auch mit einem Haltepunkt effektiver ist). Allerings bekomme ich hier lediglich eine Blanko-Login-Seite.
b14012076519c89a1f2c66e446e32d0d

Content-Key: 287903

Url: https://administrator.de/contentid/287903

Printed on: April 20, 2024 at 02:04 o'clock

Mitglied: 114757
114757 Nov 09, 2015 updated at 09:53:01 (UTC)
Goto Top
Moin,
warum das ganze nicht via OAuth machen? Ist doch heutzutage kein Problem mehr, und die empfohlene Methode für FB
https://developers.facebook.com/docs/facebook-login/manually-build-a-log ...

Gruß jodel32
Member: Aicher1998
Aicher1998 Nov 09, 2015 at 09:58:48 (UTC)
Goto Top
Zitat von @114757:

Moin,
warum das ganze nicht via OAuth machen? Ist doch heutzutage kein Problem mehr, und die empfohlene Methode für FB
https://developers.facebook.com/docs/facebook-login/manually-build-a-log ...
Danke, soweit war ich auch schon. Bloß einerseits versteh ich das nicht ganzm wie das zu machen ist und anderersits hat der Login via AppID und AppSecret über die developer-DLL auch nicht funktioniert.
Mitglied: 114757
114757 Nov 09, 2015 updated at 10:05:28 (UTC)
Goto Top
Zitat von @Aicher1998:
warum das ganze nicht via OAuth machen? Ist doch heutzutage kein Problem mehr, und die empfohlene Methode für FB
https://developers.facebook.com/docs/facebook-login/manually-build-a-log ...
Danke, soweit war ich auch schon. Bloß einerseits versteh ich das nicht ganzm wie das zu machen ist und anderersits hat der Login via AppID und AppSecret über die developer-DLL auch nicht funktioniert.
Naja,
damit bekommt das auch ein absoluter Anfänger hin ...
Member: Aicher1998
Aicher1998 Nov 09, 2015 at 10:22:02 (UTC)
Goto Top
Ich möchte es aber am PC und nicht am Handy machen.

Beim Download von NuGet: "Das Erweiterungsmanifest ist ungültig."
Noch dazu ist die Seite veraltet. Da ist ein Link zu http://graph.facebook.com/zuck, wobei man aber inzwischen schon gar nicht mehr den Graph über den Username aufrufen kann
{
   "error": {  
      "message": "(#803) Cannot query users by their username (zuck)",  
      "type": "OAuthException",  
      "code": 803,  
      "fbtrace_id": "AG30OZkBLCH"  
   }
}

Das werd ich mir mal ansehen.

damit bekommt das auch ein absoluter Anfänger hin ...
also ich bin kein anfänger, tu mir aber trotzdem schwer.
Mitglied: 114757
114757 Nov 09, 2015 updated at 10:51:48 (UTC)
Goto Top
Na dann mach es halt auf die alte Art wenn das noch etwas zu hoch für dich ist:

Hier ein Beispiel um den Quelltext einer Facebook-Seite in einer Textbox abzulegen nachdem der User eingeloggt wurde.
Imports System.Net
Imports System.Text
Imports System.IO

Public Class Form1
    Private Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click
        Dim url_login As String = "https://www.facebook.com/login.php"  
        Dim username As String = "user@domain.de"  
        Dim password As String = "GaNzGeHeim"  
        Dim strPostData As String = "?email=" & username & "&pass=" & password  
        Dim strUserAgent As String = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:42.0) Gecko/20100101 Firefox/42.0"  

        Dim cookies As New CookieContainer
        Dim postBytes() As Byte = Encoding.ASCII.GetBytes(strPostData)
        Dim request As HttpWebRequest = WebRequest.Create(url_login)

        With request
            .Method = "POST"  
            .ContentType = "application/x-www-form-urlencoded"  
            .UserAgent = strUserAgent
            .ContentLength = postBytes.Length
            .CookieContainer = cookies
            Dim stream As Stream
            stream = request.GetRequestStream()
            Using stream
                stream.Write(postBytes, 0, postBytes.Length)
                stream.Close()
            End Using
            .GetResponse()
        End With
        'Seite welche abgerufen werden soll nachdem der User eingeloggt ist  
        Dim pageRequest As HttpWebRequest = WebRequest.Create("https://www.facebook.com/pages")  
        With pageRequest
            .CookieContainer = cookies
            .UserAgent = strUserAgent
            .Method = "GET"  
            Dim stream As New StreamReader(pageRequest.GetResponse().GetResponseStream())
            Using stream
                'Quellcode der Seite in einer Textbox ablegen  
                txtWebpage.Text = stream.ReadToEnd()
                stream.Close()
            End Using
        End With
    End Sub
End Class
Funktioniert hier einwandfrei...

Gruß jodel32
Member: Aicher1998
Aicher1998 Nov 09, 2015 updated at 11:04:08 (UTC)
Goto Top
Danke. werde ich gleich testen. Ich hab sowas ähnliches auch schon gefunden, was aber nicht funktioniert hat:
https:www.vb-paradise.de/index.php/Thread/67878-facebook-http-webrequest-response-cookie-problem/

Ich hab noch was geändert:
Dim request As HttpWebRequest = CType(WebRequest.Create(url_login), HttpWebRequest)
wegen
Option Strict On

hab deinen Code getestet.
"Melde dich an, um fortzufahren."
Es funktioniert nicht.
Mitglied: 114757
114757 Nov 09, 2015 updated at 11:09:39 (UTC)
Goto Top
Zitat von @Aicher1998:
hab deinen Code getestet.
"Melde dich an, um fortzufahren."
Es funktioniert nicht.
Hier lüppt das problemlos, VS2015, kann ich dir gerne zeigen!

was aber nicht funktioniert hat:
Bei dir scheint nicht viel zu laufen so wie das aussieht.
Member: Aicher1998
Aicher1998 Nov 09, 2015 updated at 11:15:41 (UTC)
Goto Top
Ok wenn ich deinen Code benutze bekomme ich als Antwort
Falsche E-Mail-Adresse oder Telefonnummer
Die von dir eingegebene E-Mail-Adresse oder Telefonnummer kann keinem Konto zugeordnet werden.

Ändere ich jetzt
Dim strPostData As String = "?email=" & username & "&pass=" & password  
in
Dim strPostData As String = "email=" & username & "&pass=" & password  
Dann nimmt Facebook meine Zugangsdaten an, aber wieder mit dem gleichen Problem wie gehabt. Dass keine Cookies aktiviert sind:
1c8f8fcdcb1bc1aad32928aff1bb6045
Mitglied: 114757
114757 Nov 09, 2015 updated at 11:37:10 (UTC)
Goto Top
Naja deswegen habe ich ja gesagt mach es wie es Facebook empfiehlt (OAuth), wenn bei dir alles nicht funktioniert was man dir gibt es hier aber läuft, was soll ich da machen??
Member: Aicher1998
Aicher1998 Nov 09, 2015 at 13:13:48 (UTC)
Goto Top
Ich versteh auch nicht, wieso der selbe Code bei dir geht und bei mir nicht.
Selbst wenn ich deinen Option-Strict-Off-Code verwende, in dem ich bei mir Options Strict deaktiviere, funktioniert es auch nicht.

Ich hab VS2010, das wird ja keinen Unterschied machen.
In meinem Paswort kommt ein Ausrufezeichen vor. Ich hab schon versucht, das durch %21 zu ersetzen. Auch wenn ich die Übertragung auf UTF8 stelle, funktioniert es genauso wenig wie bei Default.