I have an existing application that displays Google Analytics data. Currently, it stores the username and password which I do not like, so I wanted to convert it to use OAuth. I have isolated the authentication method to get the token in hopes that all I would have to do is change this method:
public static string getSessionTokenClientLogin(string email, string password)
{
//Google analytics requires certain variables to be POSTed
string postData = "Email=" + email + "&Passwd=" + password;
//defined - should not channge much
postData = postData + "&accountType=HOSTED_OR_GOOGLE" + "&service=analytics" + "&source=testcomp-testapp-1";
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] data = encoding.GetBytes(postData);
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("https://www.google.com/accounts/ClientLogin");
myRequest.Method = "POST";
myRequest.ContentType = "application/x-www-form-urlencoded";
myRequest.ContentLength = data.Length;
Stream newStream = myRequest.GetRequestStream();
// Send the data.
newStream.Write(data, 0, data.Length);
newStream.Close();
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
Stream responseBody = myResponse.GetResponseStream();
Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
StreamReader readStream = new StreamReader(responseBody, encode);
//returned from Google Analytics API
string response = readStream.ReadToEnd();
//get the data we need
string[] auth = response.Split(new string[] { "Auth=" }, StringSplitOptions.None);
//return it (the authorization token)
return auth[1];
}
Is there an easy way to convert this to OAuth? I can change the parameters, but I am hoping I do not have to make architectural changes to the rest of my app. Thanks!
You should be able to use the guide found at http://blog.stevienova.com/2008/04/19/oauth-getting-started-with-oauth-in-c-net/ as a basis for writing code to grab an OAuth token. You should use
https://www.google.com/accounts/OAuthGetRequestToken(as indicated here) instead ofhttp://term.ie/oauth/example/request_token.php, obviously. I don’t think you will need to substantially change your architecture to get this working. Also, you will need to authorize the token before you can use it. I think reading through http://code.google.com/apis/accounts/docs/OAuth_ref.html should get you most of what you need.