Sto scrivendo un'app Web per eseguire automaticamente l'autopost su google buzz.intestazione autorizzazione sconosciuta gdata
Ho scritto una libreria C# per gestire con "Oauth dance" e in esso funziona bene, posso ottenere oauth_token e oauth_token_secret.
Ho utilizzato www.googlecodesamples.com/oauth_playground/ per convalidare my oauth_token e oauth_token_secret e funziona correttamente. L'ho provato con con GET e https://www.googleapis.com/buzz/v1/activities/@me/@self per ottenere lo streaming dell'utente, funziona.
ma ora
sto cercando di fare lo stesso con la mia libreria C#, ma ottengo sempre questo errore :
<?xml version="1.0" encoding="UTF-8"?>
<errors xmlns="http://schemas.google.com/g/2005">
<error>
<domain>GData</domain>
<code>invalid</code>
<location type="header">Authorization</location>
<internalReason>Unknown authorization header</internalReason>
</error>
</errors>
mia intestazione di richiesta è la stessa di quella da parco giochi.
Accept: */*
Content-Type: application/atom+xml
Authorization: OAuth oauth_version="1.0", oauth_nonce="9216320",
oauth_timestamp="1283430867", oauth_consumer_key="www.mysite.com",
oauth_token="1%2FZodlNmPP96GT11vYaWA0y6QoqKLqNqZ8bNmxknZZZc",
oauth_signature_method="HMAC-SHA1",
oauth_signature="Tuu82feKNWa4CxoDUyvtIEVODRA%3D"
GData-Version: 2.0
Ecco il codice C#:
string headAuth = "Authorization: OAuth oauth_version=\"1.0\", oauth_nonce=\"9216320\", oauth_timestamp=\"1283430867\",
oauth_consumer_key=\"www.mysite.com\", oauth_token=
\"1%2FZodlNmPP96GT11vYaWA0y6QoqKLqNqZ8bNmxknZZZc\",
oauth_signature_method=\"HMAC-SHA1\", oauth_signature=
\"Tuu82feKNWa4CxoDUyvtIEVODRA%3D\"";
HttpWebRequest req1 =(HttpWebRequest)HttpWebRequest.Create("https://www.googleapis.com/buzz/v1/activities/@me/@self");
req1.Method = "GET";
req1.Accept = "*/*";
req1.ContentType = "application/atom+xml";
req1.Headers.Add("Authorization", headAuth);
req1.Headers.Add("GData-Version", "2.0");
try
{
HttpWebResponse response1 =(HttpWebResponse)req1.GetResponse();
using (var sr = new StreamReader(response1.GetResponseStream()))
{
string test_1 = sr.ReadToEnd();
}
}
catch (WebException e)
{
Stream objStream = e.Response.GetResponseStream();
StreamReader objStreamReader = new StreamReader(objStream);
string err = objStreamReader.ReadToEnd();
}
Perché con gli stessi dati che funziona bene su un parco giochi e non funziona in codice C#? Qualche idea su come risolverlo?
Grazie, Stefano
Hai risolto? Perché sto affrontando lo stesso problema con l'API di provisioning. – JochenJung