facebook com.facebook.http.protocol.ApiException: remote_app_id does not match stored id

Exception during service
com.facebook.http.protocol.ApiException: remote_app_id does not match stored id
at com.facebook.http.protocol.ApiResponseChecker.b(ApiResponseChecker.java:78)
at com.facebook.http.protocol.ApiResponseChecker.a(ApiResponseChecker.java:107)
at com.facebook.http.protocol.ApiResponse.h(ApiResponse.java:208)
at com.facebook.katana.server.protocol.AuthorizeAppMethod.a(AuthorizeAppMethod.java:266)
at com.facebook.katana.server.protocol.AuthorizeAppMethod.a(AuthorizeAppMethod.java:27)
at com.facebook.http.protocol.SingleMethodRunnerImpl.a(SingleMethodRunnerImpl.java:144)
at com.facebook.http.protocol.AbstractSingleMethodRunner.a(AbstractSingleMethodRunner.java:16)
at com.facebook.katana.server.handler.PlatformOperationHandler.c(PlatformOperationHandler.java:284)
at com.facebook.katana.server.handler.PlatformOperationHandler.a(PlatformOperationHandler.java:185)
at com.facebook.fbservice.service.BlueServiceQueue.d(BlueServiceQueue.java:245)
at com.facebook.fbservice.service.BlueServiceQueue.d(BlueServiceQueue.java:51)
at com.facebook.fbservice.service.BlueServiceQueue$3.run(BlueServiceQueue.java:191)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:390)
at java.util.concurrent.FutureTask.run(FutureTask.java:234)
at com.facebook.common.executors.HandlerExecutorServiceImpl$ListenableScheduledFuture.run(HandlerExecutorServiceImpl.java:268)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.os.HandlerThread.run(HandlerThread.java:60)

 유니티3D에 연동한 안드로이드 페이스북 막바지에 접어든 상태에서 로그인이 안되면서 위와 같은 로그가 나오는 이슈가 발생했습니다.

 액세스 권한을 요청한다는 다이얼로그만 뜨고 확인을 눌러도 로그인 되지 않고 Session close 상태더군요.


 안드로이드 패키지명을 기존 com.Test.unityandroidfacebookjar 에서 실제 서비스해야할 태국용인 com.tdp.heavensword로 변경후 빌드 된 상태였습니다. 일단 1차적으로는 위와 같이 페이스북 개발자 센터에서도 바꿔줘야 했었고 추가적인 원인은 해쉬키였는데요,


///< 해쉬키를 찾는다. 패키지 이름은 각자 다를것이다.
  try {
   PackageInfo info = this.getPackageManager().getPackageInfo("com.tdp.heavensword", PackageManager.GET_SIGNATURES);
   for (Signature sig : info.signatures) {
    MessageDigest md = MessageDigest.getInstance("SHA");
    md.update(sig.toByteArray());
    strHash = Base64.encodeToString(md.digest(), Base64.DEFAULT);
   }
  }
  catch (NameNotFoundException e) {
   Log.d("UnityFacebookTest", "Error Hashkey not found");
  }
  catch (NoSuchAlgorithmException e) {
   Log.d("UnityFacebookTest", "Error Hashkey no such algorithm");
  }
  ///< 해시키를 출력. 이 값을 페이스북 개발자 센터의 등록한 앱에 기입
  Log.d("UnityFacebookTest", "Hash : " + this.strHash);


 최종 빌드를 다른분이 하신거라 페이스북 연동 초기화, 로그인시에 정리한 것 처럼 해쉬키를 위와 같은 소스를 활용해서 다시 추출해서 페이스북 개발자 센터에 적용하니 이상없이 로그인이 잘됩니다. 그리고 해쉬키는 유니티3D에서 만든 릴리즈용이나 디버그키 아무거나 해도 페이스북 개발자 센터에 등록만 되어 있다면 상관은 없더군요.

 근데 이 이슈의 최종 원인은 태국에서 담당자 실수였네요. 페이스북 앱 등록을 또 다른걸 추가해서 거기에 정보를 추가했던거죠. 기존것에 추가한게 아니고 그래서 App ID가 다르다보니 이런 이슈가...

 다른분이 해결한 방식도 참고해보세요.

이 블로그의 인기 게시물

CMake Windows에 설치하기

Unity3D 안드로이드 Keystore 생성하기

Unity3D iOS Plugin 만들어 연동하기