Google Reader API Authentication

I am trying to authenticate with google api using this snippet:

RestTemplate restTemplate = new RestTemplate(); List<HttpMessageConverter<?>> converters = new ArrayList<HttpMessageConverter<?>> restTemplate.getMessageConverters()); converters.add(new PropertiesHttpMessageConverter()); restTemplate.setMessageConverters(converters); Properties result = preparePostTo(AUTHENTICATION_URL) .using(restTemplate) .expecting(Properties.class) .withParam("accountType", "HOSTED_OR_GOOGLE") .withParam("Email", email) .withParam("Passwd", password) .withParam("service", "reader") .withParam("source", "google-like-filter") .execute(); String token = (String) result.get("Auth"); 

Now I have a token like: DQAAAI ... kz6Ol8Kb56_afnFc (over 100 characters) and try to get the URL:

 URL url = new URL(LIKERS_URL + "?i=" + id); HttpURLConnection connection = (HttpURLConnection)url.openConnection(); connection.addRequestProperty("Authorization", "GoogleLogin Auth=" + token); return url; 

But while I get content using this URL, I get a 401 Client Error exception. What could it be?

In accordance with this issue , the Google Reader authentication problem should all be fine.

I can get the content by simply pasting the URL into the browser.

+4
source share
2 answers

Try using OAuth to authenticate and authorize Google Reader. You just need to use the OAuth library and register your application with Google in order to get the OAuth user key / secret key.

You can use oauth.googlecode.com or Scribe .

+1
source

Hey, I don’t know if this will help you, or if you don’t care, but I finally got into Google Reader with the following ConsoleApp code, which I whipped (note that this is C #, but should easily translate to Java).

 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.IO; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { getAuth(); Console.ReadLine(); } public static void getAuth() { //put in the username and password string postData = " Email=YOURUSERNAME@gmail.com &Passwd=YOURPASSWORD&service=reader&source=some-uniqueapp-v1"; WebRequest authReq = WebRequest.Create("https://www.google.com/accounts/ClientLogin"); authReq.ContentType = "application/x-www-form-urlencoded"; authReq.Method = "POST"; byte[] bytes = Encoding.ASCII.GetBytes(postData); authReq.ContentLength = bytes.Length; Stream os = authReq.GetRequestStream(); os.Write(bytes, 0, bytes.Length); WebResponse resp = authReq.GetResponse(); StreamReader sr = new StreamReader(resp.GetResponseStream()); string responseContent = sr.ReadToEnd().Trim(); string[] responseSpilt = responseContent.Split('='); string authticket = responseSpilt[3]; Console.WriteLine("Auth = " + authticket); sr.Close(); getToken(authticket); } public static void getToken(string auth) { WebRequest tokenReq = WebRequest.Create("https://www.google.com/reader/api/0/token"); tokenReq.ContentType = "application/x-www-form-urlendcoded"; tokenReq.Method = "GET"; tokenReq.Headers.Add("Authorization", "GoogleLogin auth=" + auth); WebResponse response = tokenReq.GetResponse(); if (response == null) return; StreamReader sr = new StreamReader(response.GetResponseStream()); string respContent = sr.ReadToEnd().Trim(); string[] respSplit = respContent.Split('/'); string token = respSplit[2]; Console.WriteLine(" "); Console.WriteLine("Token = " + token); sr.Close(); } } } 
0
source

All Articles