Möchte man Google Maps Business Dienste nutzen, dann muss jeder URL oder WebService Aufruf mit einer ClientID (Google API Key) signiert werden. Dieses Beispiel soll zeigen, wie man eine solche signierte URL relativ einfach erzeugen kann.
Um eine gültige Google API Signatur zu erzeugen, benötigt man die aufzurufende URL, sowie seinen Google API Key. Ihren Google Maps Key können Sie hier beantragen. Und dann kann es auch schon losgehen.
FUNCTION z_calculate_google_key. *"---------------------------------------------------------------------- *"*"Local Interface: *" IMPORTING *" VALUE(IV_API_KEY) TYPE STRING *" VALUE(IV_URL) TYPE STRING *" EXPORTING *" VALUE(EV_SIGNATURE) TYPE STRING *" VALUE(EV_SIGNED_URL) TYPE STRING *"---------------------------------------------------------------------- DATA: lv_key TYPE string, lv_url TYPE string. DATA: lv_key_x TYPE xstring, lv_url_x TYPE xstring. MOVE iv_api_key TO lv_key. MOVE iv_url TO lv_url. REPLACE ALL OCCURRENCES OF '-' IN lv_key WITH '+'. REPLACE ALL OCCURRENCES OF '_' IN lv_key WITH '/'. * Decoding the Key CALL FUNCTION 'SCMS_BASE64_DECODE_STR' EXPORTING input = lv_key IMPORTING output = lv_key_x. * Converting the URL to xstring CALL FUNCTION 'SCMS_STRING_TO_XSTRING' EXPORTING text = lv_url IMPORTING buffer = lv_url_x. TRY. * Calculating the Signature CALL METHOD cl_abap_hmac=>calculate_hmac_for_raw EXPORTING if_algorithm = 'SHA1' if_key = lv_key_x if_data = lv_url_x IMPORTING ef_hmacb64string = ev_signature. CATCH cx_abap_message_digest . ENDTRY. REPLACE ALL OCCURRENCES OF '+' IN ev_signature WITH '-'. REPLACE ALL OCCURRENCES OF '/' IN ev_signature WITH '_'. CONCATENATE 'https://maps.google.com' lv_url '&signature=' ev_signature INTO ev_signed_url. ENDFUNCTION.
Was passiert im Code?
Zuerst werden im API Key die Zeichen – und _ ersetzt. Danach wird der Key von String in BASE64 umgewandelt. Der URL String wird in einen XSTRING konvertiert.
Nach den Konvertierungen wird die Signatur aus Key und URL berechnet. Danach werden alle – und _ Zeichen in der Signatur ersetzt.
Im letzten Schritt wird aus der URL und der Signatur die gesamte aufzurufende URL erstellt.
Comments are closed.