import oauth2import urllib #for url-encode
#import urllib2 already included in python 3
import time #Unix timestamp import oauth2
import requests
import re
resourceUrl = "https://rest.immobilienscout24.de/restapi/api/search/v1.0/search/region?realestatetype=apartmentrent&geocodes=1276"
def build_request(url, method): params = { 'oauth_version': "1.0", 'oauth_nonce': oauth2.generate_nonce(), 'oauth_timestamp': int(time.time()) }
consumer = oauth2.Consumer(key='ConsumerKey',secret='ConsumerSecret')
params['oauth_consumer_key'] = consumer.key print("method: "+method) print("url: "+url) print("params: "+str(params)) req = oauth2.Request(method=method, url=url, parameters=params)
print("req: "+str(req))
signature_method = oauth2.SignatureMethod_HMAC_SHA1()
req.sign_request(signature_method, consumer, None) return req#end build_request
request = build_request(resourceUrl,'GET')
request = re.sub(r"oauth_body_hash=.*&", "oauth_signature_method=HMAC-SHA1&", str(request.to_url())) #The parameter [oauth_body_hash] is not supported by is24
print("request: "+str(request))
r = requests.get(request.encode(encoding='UTF-8',errors='strict'))
print(r.text)method: GET
url: https://rest.immobilienscout24.de/restapi/api/search/v1.0/search/region?realestatetype=apartmentrent&geocodes=1276
params: {'oauth_version': '1.0', 'oauth_nonce': '77556460', 'oauth_timestamp': 1570286153, 'oauth_consumer_key': 'ConsumerKey'}
req: {'oauth_version': '1.0', 'oauth_nonce': '77556460', 'oauth_timestamp': 1570286153, 'oauth_consumer_key': 'ConsumerKey'}
request: https://rest.immobilienscout24.de/restapi/api/search/v1.0/search/region?realestatetype=apartmentrent&geocodes=1276&oauth_version=1.0&oauth_nonce=77556460&oauth_timestamp=1570286153&oauth_consumer_key=ConsumerKey&oauth_signature_method=HMAC-SHA1&oauth_signature=P%2BgqDj2iuHtSAWwuOTi0NDG6T1s%3D
<common:messages xmlns:common="http://rest.immobilienscout24.de/schema/common/1.0">
<message>
<messageCode>ERROR_AUTHENTICATION_REQUIRED</messageCode>
<message>Invalid signature for signature method HMAC-SHA1</message>
</message>
</common:messages>
all OAuth parameters set in the signature base string must be set in the Authorization header as well the oauth_signature must:
a) not be part of the signature base string, but it must
b) be part of the Authorization header
except the oauth_signature the Authorization header must not contain more/other OAuth parameters than the signature base string"