Autenticação da API Bing Search

Isso pode parecer um pouco óbvio para alguns, mas isso me deixou louco por um tempo enquanto tentava codificar um serviço de busca Bing. Ao enviar a solicitação usando um cliente GUI e curl, o ‘basic’ no cabeçalho de autenticação básico não fazia distinção entre maiúsculas e minúsculas. No entanto, ao enviar por meio de código (Java e Groovy), o ‘básico’ tinha que ser capitalizado (‘Básico’) ou eu receberia um erro informando que o serviço só aceita solicitações de autenticação Básica e OAuth. Como se isso não bastasse para deixá-lo louco, há outra advertência. Ao enviar usando curl, um gui ou através da página da web, você deve especificar sua chave de API duas vezes (usuário / pw). No entanto, ao enviar por código, você especifica a chave apenas uma vez no campo de senha. No entanto, você precisa codificar um ‘:’ antes de sua senha ou o serviço não funcionará. Então,

// Works
def authString = ":${apikey}".getBytes().encodeBase64()
// Header should look like this
["Authorization": ["Basic ${authString}"]]

// Does not work. No leading colon (:) in the auth string. 'Basic' is lowercase
def authString = "${apikey}".getBytes().encodeBase64()
// Header should look like this
["Authorization": ["basic ${authString}"]]

Espero que você ache isso tão útil quanto eu teria achado hoje. 🙂