Logga in Python 3

Added by Oliver over 4 years ago

Hej, jag försöker göra min första inloggning med Python 3. Tyvärr får jag felmeddelandet: {'message': 'Something went wrong when logging in.', 'code': 'NEXT_LOGIN_INVALID_LOGIN_PARAMETER'}. Min timestamp är: 1455571730231. Jag har inte tillgång till M2Crypto utan använder istället Python Cryptographic. Jag funderar på ifall felet kan bero på skillnad i paddning. Min kod är:

import time
import base64
from Crypto.Cipher import PKCS1_OAEP
from Crypto.PublicKey import RSA
import http.client, urllib
import json

username = '....'
password = '.....'
service  = 'NEXTAPI'
URL='api.test.nordnet.se'
API_VERSION='2'
conn = http.client.HTTPSConnection(URL)

#Encrypt username and password
keyfile = open('NEXTAPI_TEST_public.pem','r')
rsa = RSA.importKey(keyfile.read())
cipher = PKCS1_OAEP.new(rsa)
timestamp = int(round(time.time()*1000))
timestamp = str(timestamp)
buf = base64.b64encode(str.encode(username+':'+password+':'+timestamp))
hash = base64.b64encode(cipher.encrypt(buf))

#load right parameters for login
headers = {'Accept': 'application/json'}
params = urllib.parse.urlencode({'service': service, 'auth': hash})

#login
conn.request('POST', '/next/' + API_VERSION + '/login', params, headers)

Jag har testat både användarnamn och lösenord manuellt, så det borde inte var något fel på dem.

Är tacksam för all hjälp.

//Oliver


Replies (3)

RE: Logga in Python 3 - Added by Nordnet Simon over 4 years ago

I vårat exempel base64 encodas username, password, timestamp individuellt och sen slås dom strängarna ihop med : mellan
buf = base64.b64encode(username)+':'+base64.b64encode(password)+':'+base64.b64encode(timestamp)

I ditt exempel
buf = base64.b64encode(str.encode(username+':'+password+':'+timestamp))
så slår du först ihop strängen och sen base64 encodar du. Det gör att det inte blir det vi förväntar oss på andra sidan.

RE: Logga in Python 3 - Added by Andreas over 4 years ago

Jag testade koden från Oliver med eran ändring men fick samma felmeddelande. Har ni någon lösning för hur man ska göra med Python 3?

RE: Logga in Python 3 - Added by Andreas over 4 years ago

Fungerade med PKCS1_v1_5

(1-3/3)