You need to use the Google ClientLogin HTTP API to request an authentication token using the C2DM account email address and password:
public static String getClientLoginAuthToken() { HttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost("https://www.google.com/accounts/ClientLogin"); try { List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1); nameValuePairs.add(new BasicNameValuePair("Email", "C2DMEMAILADDRESS)); nameValuePairs.add(new BasicNameValuePair("Passwd", "C2DMPASSWORD)); nameValuePairs.add(new BasicNameValuePair("accountType", "GOOGLE")); nameValuePairs.add(new BasicNameValuePair("source", "Google-cURL-Example")); nameValuePairs.add(new BasicNameValuePair("service", "ac2dm")); post.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = client.execute(post); BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); String line = ""; while ((line = rd.readLine()) != null) { Trace.e("HttpResponse", line); if (line.startsWith("Auth=")) { return line.substring(5); } } } catch (IOException e) { e.printStackTrace(); } Trace.e(TAG, "Failed to get C2DM auth code"); return ""; }
For more information about auth token, see this tutorial: http://www.vogella.de/articles/AndroidCloudToDeviceMessaging/article.html
source share