Closed ghost closed 10 years ago
Härligt att se en C# implementation av Swedbanks API! Om du lägger upp koden så säg till så länkar jag gärna till den.
Angånde ditt problem, utan att se den råa HTTP-anropet så är det svårt för mig att säga exakt vad som är fel. 401 är ett generellt meddelande för Swedbanks API som säger något i stil med "Det är något i ditt anrop jag inte gillar, så därför får du inte komma in!".
Men lite generella tips:
Är inte alla dessa delar på plats så blir det tvärstopp.
Kan lägga upp den så fort jag fått det att fungera :-)
Aah, hade missat att sätta dsid-cookien. Nu får jag dock en 400 istället. Såhär ser mina headers ut. Antar att det är något fel där?
Lyckades inte sätta proxy-connection
, kan det vara den som spökar?
POST /TDE_DAP_Portal_REST_WEB/api/v1/identification/personalcode?dsid=f00B3F52 HTTP/1.1
Accept-Language: sv-se Accept-Encoding: gzip, deflate Authorization: SGl0aFlBR3J6aThmdTczajo3M0M0N0QwMC0yNkEzLTRCMEUtODYxNy1FOTZEOTE1NTE4M0Q= Cookie: dsid=f00B3F52 Accept: / User-Agent: SwedbankMOBPrivateIOS/3.9.0_(iOS;_8.0.2)_Apple/iPhone5,2 Content-Type: application/json; charset=UTF-8 Host: auth.api.swedbank.se Content-Length: 78 Expect: 100-continue Connection: Keep-Alive
Det är mycket möjligt att proxy-connection måste finnas för att fungera. Som sagt, API:et är extremt känsligt och är det något som avviker från det sätt som mobilappen kommunicerar med API:et så avbryts inloggingsprocessen. Skulle det inte hjälpa så skicka med HTTP-förfrågan med den datan som skickas (censurerad från personnummer och lösenord förstås).
Se även till att sätta upp en cookie jar så att du kan spara de cookies som API:et svarar med.
Hej igen, testade att sätta proxy-connection med ett Fiddler anrop, men det ger samma resultat (400 - bad request), så tror inte det är där felet ligger.
Såhär ser requesten ut enligt Fiddler:
POST https://auth.api.swedbank.se/TDE_DAP_Portal_REST_WEB/api/v1/identification/personalcode?dsid=7Ce10117 HTTP/1.1 Accept-Language: sv-se Accept-Encoding: gzip, deflate Authorization: SGl0aFlBR3J6aThmdTczajozMUNGNEYzOS0xMzkxLTRFQ0MtQTgxRi0wRjM1RDFDM0YxQzU= Cookie: dsid=7Ce10117 Accept: / User-Agent: SwedbankMOBPrivateIOS/3.9.0_(iOS;_8.0.2)_Apple/iPhone5,2 Content-Type: application/json; charset=UTF-8 Host: auth.api.swedbank.se Content-Length: 68 Expect: 100-continue Connection: Keep-Alive proxy-connection: keep-alive
useEasyLogin=false&password=foo&generateEasyLoginId=false&userId=bar
Ser du något fel? Skulle du kunna posta ett exempel på en valid request?
Swedbanks API fungerar så att du skickar inte vanlig POST-data, utan en POST-request med JSON-encodad data. Så här ska det se ut utifrån ditt exempel:
{
"password" : "foo",
"useEasyLogin" : false,
"userId" : "bar",
"generateEasyLoginId" : false
}
Skulle den fortsätta bråka så kan du bara att jämföra med HTTP anropet nedan och försöka anpassa din kod så att den gör princip samma anrop. Den är från när jag senast avlyssnade Swedbank-appen. Det enda som jag har ändrat är inloggingsuppgifter samt Authorization-strängen.
POST /TDE_DAP_Portal_REST_WEB/api/v1/identification/personalcode?dsid=bDltb1dD HTTP/1.1
Host: auth.api.swedbank.se
Authorization: SGl0aFlBR3J6aThmdTczajozMUNGNEYzOS0xMzkxLTRFQ0MtQTgxRi0wRjM1RDFDM0YxQzU=
Accept: */*
Content-Type: application/json; charset=UTF-8
Accept-Language: en-us
Cookie: dsid=bDltb1dD
Accept-Encoding: gzip, deflate
Content-Length: 112
Connection: keep-alive
Proxy-Connection: keep-alive
User-Agent: SwedbankMOBPrivateIOS/3.9.0_(iOS;_8.0.2)_Apple/iPhone5,2
{
"password" : "foo",
"useEasyLogin" : false,
"userId" : "bar",
"generateEasyLoginId" : false
}
En JSON-sträng som POST body alltså. Det var något nytt :-)
Fortsätter att labba. Ett jättetack för all hjälp!
Okej, lycka till! Om det är något du undrar så är det bara att fråga!
Tog mig tiden att göra en C# wrapper igårkväll/idag. Tog lite fipplande här och var, men nu var den uppe! Även den under MIT licens. https://github.com/DarkTwisterr/SwedbankSharp
Det där ser fantastik ut! Lägger upp en länk i readme-filen samt tipsa åtminstone en person som jag tror skulle uppskatta det.
Hej,
Vill börja med att tacka för att du delar med dig av ditt API.
Tänkte testa att göra en inloggning i C#. Baserat på din PHP kod testade jag följande:
Base64encode("HithYAGrzi8fu73j:0EA86D2F-1A60-4E52-B2C3-6ED84F3C179F")
Resulterar i något som ser ut ungefär såhär:
SGl0aFlBR3J6aThmdTczajozOTI2NTk5OC05REJBLTQ0RkQtODk0RS0zNDU2Q0Y2NjE0RkE=
dsid
parameter):https://auth.api.swedbank.se/TDE_DAP_Portal_REST_WEB/api/v1/identification/personalcode?dsid=EAd2031D
Post body:
useEasyLogin: false, generateEasyLoginId: false, userId: 19XXXXXXXXXX, password: pass
Detta resulterar i en
401, Unauthorized: AUTHORIZATION_FAILED - Tjänsten anropades på ett felaktigt sätt.
.Ser du något uppenbart som jag missat?
Tack på förhand!