본문 바로가기

자료

C2DM 관리자key 받기

C2DM을 발송하기 위해선 관리자KEY를 받아야 한다. 이를 위한 소스다

확인된건 아니지만.... 한번 받은 관리자 key는 1년만 유효한거 같다(추측임)

갑자기

"Exception in thread "main" java.io.IOException: Server returned HTTP response code: 401 for URL: https://android.apis.google.com/c2dm/send"

이런 에러가 발생했다... 잘쓰던 넘인데...

하다 하다 안되서리... 관리자KEY를 다시 받고 실행하니.. 잘된다...

대충 따져보니.. 작년이맘때쯤 C2DM을 테스트 한다고 등록했던거 같다...

 

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

/**
 * AUTH 정보를 받기 위한 클래스
 * @author inforex
 *
 */
public class GetAuthAndroid {
  public  static void main( String[] args ) throws Exception{
   //AUTH 정보 받기
   try {
    String auth = getAuthToken();
    System.out.println("AUTH of PushAndroid.java ="+ auth);
   } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }

  /**
    * 구글 인증키 받기
   * @return
   * @throws Exception
   */
    public static String getAuthToken() throws Exception {
          // Sender Auth Token 인증키 받기
        String authtoken = "";
        StringBuffer postDataBuilder = new StringBuffer();
        postDataBuilder.append("accountType=HOSTED_OR_GOOGLE");
        postDataBuilder.append("&Email=asdf@gmail.com");   // 구글 id
        postDataBuilder.append("&Passwd=asdf");   // 구글 비밀번호
        postDataBuilder.append("&service=ac2dm");
        postDataBuilder.append("&source=Chatting Program"); //어플리케이션에 대한 간략설명

        byte[] postData = postDataBuilder.toString().getBytes("UTF8");
        URL url = new URL("https://www.google.com/accounts/ClientLogin");
                  
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setDoOutput(true);
        conn.setUseCaches(false);
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        conn.setRequestProperty("Content-Length", Integer.toString(postData.length));
      
        OutputStream out = conn.getOutputStream();
        out.write(postData);
        out.close();

        BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
                  
        String sidLine = br.readLine();
        String lsidLine = br.readLine();
        String authLine = br.readLine();
                  
        System.out.println("sidLine----------->>>"+sidLine);
        System.out.println("lsidLine----------->>>"+lsidLine);
        System.out.println("authLine----------->>>"+authLine);
        System.out.println("AuthKey----------->>>"+authLine.substring(5, authLine.length()));
                  
        authtoken = authLine.substring(5, authLine.length());
                  
          return authtoken;
    } 
}