어떤 키를 사용해야하나요?

현재 다음 지도 api와 카카오 rest api를 사용중에 있습니다.
manifest에는 앱키로 네이티브 키를 줬구요.
어제까진 지도가 나왔습니다.
그러고 오늘 rest api 키워드 검색에서 응답 코드가 계속 401이 나와 삽질을 좀 하다가 헤더에 들어가는 키를 rest api키에서 admin 키로 바꿔 넣으니 200이 뜨더군요. 그런데 이번엔 지도가 나오질 않아서 manifest를 rest api키로 바꾸었더니 지도는 되는데 이젠 다시 응답 코드가 401이 뜹니다.
현재는 manifest와 헤더 모두 admin키를 넣어줬습니다만 지도는 떠도 키워드 검색에서 401이 뜨네요…
제가 키에대해 제대로 이해하지 못하는 건가요? 네이티브에는 네이티브 키를 쓰라 해서 manifest에는 네이티브키를, rest api는 rest api 키를 사용하라해서 그렇게 했지만 안되고 혹시 Kakao AK가 Admin Key의 약자인가 싶어서 admin key를 넣었더니 됐다가 다시 안되고…ㅠㅠ

manifest에는 네이티브키를, rest api는 rest api key를 사용하시는게 맞아요. 그리고 ADMIN_KEY는 클라 쪽에서 사용하시면 안되는 키이구요!

지난 7일간의 서버 로그를 찾아본 결과 rest api key로 호출한 요청은 모두 성공하였고, NATIVE_APP_KEY 및 JAVASCRIPT_KEY로 요청한 경우에만 키해시 오류 및 KA 헤더의 부재로 에러가 발생하였어요. 올바른 안드로이드 키해시 값이 등록되어있는지 한번 확인해 보시겠어요?

우선 다음 맵 api의 경우
E/net.daum.mf.map.n.api.NativeBaseNetConnection: Request already aborted,url=http://ot0.maps.daum-img.net/tile/hd/I/L4/1000/444.jpg
E/net.daum.mf.map.n.api.NativeBaseNetConnection: Request already aborted,url=http://ot1.maps.daum-img.net/tile/hd/I/L4/1000/445.jpg
E/net.daum.mf.map.n.api.NativeBaseNetConnection: Request already aborted,url=http://ot2.maps.daum-img.net/tile/hd/I/L4/1000/446.jpg
E/net.daum.mf.map.n.api.NativeBaseNetConnection: Request already aborted,url=http://ot1.maps.daum-img.net/tile/hd/I/L4/999/445.jpg
라는 에러가 나오면서 지도가 나오질 않습니다.
manifest에는 native key를 넣었습니다.

그리고 rest api 사용 코드입니다.

  AsyncTask.execute(new Runnable() {
                @Override
                public void run() {
                    try {
                        HttpsURLConnection connection = (HttpsURLConnection) kakaoEndpoint.openConnection();
                        connection.setRequestMethod(KakaoUrlBuilder.HttpMethodType.GET.toString());
                        connection.setRequestProperty("Authorization", "KakaoAK " + R.string.kakao_rest_key);
                        int resposeCode = connection.getResponseCode(); //401이 받아짐.

                        if (connection.getResponseCode() == RC_SUCCESS) {
                            InputStream response = connection.getInputStream();
                            JsonReader reader = new JsonReader(new InputStreamReader(response, "UTF-8"));
                            List<PlaceInfo> placeInfos = readJsonStream(reader);

                            for (PlaceInfo placeInfo : placeInfos) {
                                cursor.newRow()
                                        .add(BaseColumns._ID, placeInfos.indexOf(placeInfo))
                                        .add(SearchManager.SUGGEST_COLUMN_TEXT_1, placeInfo.mPlace)
                                        .add(SearchManager.SUGGEST_COLUMN_TEXT_2, placeInfo.mRoadAddress);
                            }
                        } else {
                            Log.w(TAG, connection.getResponseMessage());
                        }
                        connection.disconnect();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            });

주석에 쓰여있듯 401이 들어옵니다. setRequestProperty()에 무언가 잘못된 부분이 있나요?

키해시는 디버그용 키해시가 등록되어 있습니다.

요청에 들어오는 키해시와 등록되어있는 키해시가 다른데요. 만약 각 머신의 debug.keystore를 사용하신다면 각 머신에서 빌드했을 때의 키해시가 다르기 때문에 모두 등록해줘야 해요.

으음… 제가 개발 시작한지 얼마 안되서 머신이라는게 어떤걸 말하는 건지를 모르겠네요;;

가이드에 나와있는
keytool -exportcert -alias androiddebugkey -keystore <debug_keystore_path> -storepass android -keypass android | openssl sha1 -binary | openssl base64
cmd에서 이 구문으로 생성된 키를 넣어놨습니다.

해시키 오류는 해결했습니다. java코드로 나온 해시키를 입력해야 하는군요.
지도는 네이티브 키로 잘 표시 됩니다.
그러나 여전히 rest api 사용시 401 Unauthorized가 나오네요.

connection.setRequestProperty("Authorization", "KakaoAK " + R.string.kakao_rest_key);

이 구문에 이상이 없다면 어디서 문제인걸까요…ㅜㅜ