Fornecendo informações de autenticação via msxml2.ServerXMLHTTP
Eu estou usando o ASP clássico e tentando usar a API JustGiving.
Gostaria de usá-lo para exibir o total arrecadado e o total de doações recebidas na minha página de doações no meu site.
Eu posso ver que a informação está disponível via:https://api.justgiving.com/docs/resources/v1/Account/Retrieve
<%
vurl = "http://api.justgiving.com/---myIDhere---/v1/account"
Set http = Server.CreateObject("msxml2.ServerXMLHTTP")
http.Open "GET", vurl, False
http.Send
Set dom = Server.CreateObject("msxml2.DOMDocument")
dom.loadXML http.responseText
Set items = dom.getElementsByTagName("account")
For Each item In items
Set var_totalDonated = item.getElementsByTagName("totalDonated")
If NOT (var_totalDonated IS Nothing) Then
var_totalDonated = ap(totalDonated(0).Text)
response.write var_totalDonated
End If
Next
%>
No entanto, a página expira quando eu o acesso.
Eu acho que é porque eu preciso fornecer algumas informações de autenticação como detalhado aqui:https://api.justgiving.com/docs/usage#protectedResources
Então eu peguei essa informação de autenticação.
Mas não tenho ideia de como "enviar" para a API, para que ela possa me autenticar como usuário e fornecer as informações.
Ele também menciona o fornecimento de informações no cabeçalho por meio do link acima (não posso postar o link porque não tenho reputação suficiente), mas substituo #protectedResources no final do URL por #contentTypes.
Me desculpe - eu também estou sentindo falta de algo desse lado?
Me desculpe se eu estou fazendo perguntas tolas, mas a informação sobre os documentos da API assume algum nível de inteligência por parte do usuário, e eu não tenho muito disso!
Qualquer conselho muito apreciado.
obrigado
Obrigado a John pela sua resposta.
Com base nisso, mudei o código para:
<%
vurl = "https://api.justgiving.com/API_KEY/v1/account"
Set http = Server.CreateObject("msxml2.ServerXMLHTTP")
http.Open "GET", vurl, False, "username", "pwd"
http.setTimeouts 5000, 5000, 10000, 10000 ''ms - resolve, connect, send, receive
http.setRequestHeader "Authorization", "Basic MY_AUTH_STRING"
http.Send
Set dom = Server.CreateObject("msxml2.DOMDocument")
dom.loadXML http.responseText
Set items = dom.getElementsByTagName("account")
For Each item In items
Set var_totalDonated = item.getElementsByTagName("totalDonated")
If NOT (var_totalDonated IS Nothing) Then
var_totalDonated = (var_totalDonated(0).Text)
response.write var_totalDonated
End If
Next
%>
Mas infelizmente a página ainda expira.
Estou verificando também por: groups.google.com/forum/#!topic/justgiving-api/Xhz5Fkxuy1s
Mas sem resposta até agora.
obrigado novamente
Versão Fixa<%
Sub debug( varName )
Dim varValue
varValue = Eval( varName )
response.write "<p style='margin:10px; border-bottom:2px solid #ccc;border-top:1px solid #eaeaea;background-color:white;padding:10px;color:red;text-align:left;'><strong>" & varName & "</strong>: " & varvalue & "</p>" & vbcrlf & vbcrlf
End Sub
vurl = "https://api.justgiving.com/AP_KEY/v1/account"
Set http = Server.CreateObject("msxml2.ServerXMLHTTP")
http.Open "GET", vurl, False, username, password
http.setTimeouts 5000, 5000, 10000, 10000 'ms - resolve, connect, send, receive
http.setRequestHeader "Authorization", "Basic AUTH_STRING"
http.Send
Response.ContentType = "application/xml"
Set dom = Server.CreateObject("msxml2.DOMDocument")
dom.loadXML http.responseText
Set items = dom.getElementsByTagName("account")
For Each item In items
Set var_totalDonated = item.getElementsByTagName("totalDonated")
If NOT (var_totalDonated IS Nothing) Then
var_totalDonated = ap(var_totalDonated(0).Text)
debug "var_totalDonated"
End If
Set var_totalRaised = item.getElementsByTagName("totalRaised")
If NOT (var_totalRaised IS Nothing) Then
var_totalRaised = ap(var_totalRaised(0).Text)
debug "var_totalRaised"
End If
Set var_totalGiftAid = item.getElementsByTagName("totalGiftAid")
If NOT (var_totalGiftAid IS Nothing) Then
var_totalGiftAid = ap(var_totalGiftAid(0).Text)
debug "var_totalGiftAid"
End If
Next
%>
Anteriormente eu estava usando:
vurl = "https://api.justgiving.com/AP_KEY/v1/account"
Mas quando eu mudei para https funcionou.
Eu pensei que tinha tentado isso anteriormente, mas obviamente não.
Mais uma vez obrigado a John, eu realmente aprecio sua ajuda!