2013-10-12 2 views
1

XMPP를 사용하여 facebook 채팅에 연결하는 facebook 앱을 만들었습니다. 그리고 그것은 훌륭하게 작동했습니다. 하지만 최근에 내가 권한을 부여하려고하는 계정에서 올바른 권한을 요청하지 않아 내 앱이 작동하지 않게됩니다. 벨로우즈는 내 앱이 페이스 북에서 얻는 권한의 스크린 샷이다. 하나는 다른 것보다 더 많은 허가를 보여줍니다. 허가를 요청하는 내 코드는 변경되지 않았습니다 :Facebook 앱이 더 이상 올바른 권한을 요청하지 않습니다.

Session session = Session.getActiveSession(); 

     if (session == null) { 
      if (savedInstanceState != null) { 
       session = Session.restoreSession(this, null, statusCallback, 
         savedInstanceState); 
      } 
      if (session == null) { 
       session = new Session(this); 
      } 
      Session.setActiveSession(session); 
      if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) { 
       session.openForRead(new Session.OpenRequest(this) 
         .setPermissions(
           Arrays.asList("xmpp_login", 
             "user_online_presence", 
             "friends_online_presence", 
             "read_mailbox", "read_friendlists")) 
         .setCallback(statusCallback)); 
      } 
     } 

올바른 사용 권한 : enter image description here

잘못된 :

enter image description here

+0

요청한 권한으로 Facebook 응용 프로그램에서 대화 상자를 가져 옵니까? 왜냐하면 세션을 시작할 때 올바르게 기억한다면 (인증 된 세션이 아니라면) 그 허가를 요청해야만합니다. – JoxTraex

+0

그 스크린 샷은 사용자가 앱에 부여한 권한을 보여 주며 인증에 표시되는 권한 집합을 보여주지 않습니다 대화 상자가 나타납니다 - 당신이 요청한 권한을 정확하게 묻는 것입니까? 그렇지 않은 경우 열려고하는 세션에 요청 된 권한 집합이 올바르게 적용되어 있는지 확인하십시오. – Igy

+0

@Igy 일부 테스트를 수행 한 후에도 사용자 코드가 변경되지 않아도 인증 할 때 사용 권한을 요청할 때 일관성이없는 것으로 보입니다. – Peter

답변

2

(워드 프로세서를 통해 읽기) 주소를 무엇에 찔린 촬영을 - 하지만 너무 오랫동안 인사를 나눴다.

차이점은 첫 번째 사용자가 이전에 앱을 인증 한 것으로 보입니다. '마지막 액세스'는 '기본 정보'라고 말할 수 있습니다. 이 경우 사용자는 "SessionState.CREATED_TOKEN_LOADED"를 가질 수 있지만 이전에 캐시 된 토큰이 없으므로 다른 사용자가 "SessionState.CREATED"를 가질 수 있습니다. "openForRead"를 호출하기 전에 두 상태를 모두 확인하면 어떻게됩니까? 이 다른 사람이 실패하면 다른 곳에서 "열린"곳이 있을까요? 다른 사람이 권한을 요청하지 않을 수도 있습니다.

문서를 기반으로 한 또 다른 의견은 "Session.setActiveSession (session);" 아직 열지 않은 세션에서 이것을 호출 할 수 없습니다. 그래서 당신은 아마도 "openForRead"호출 이후로 이동해야합니다. 그렇지 않으면 예외가 발생하고 또 다른 open() 요청이 여파를 휩쓸 수 있습니다.

+0

감사합니다. 당신은 완전히 옳았습니다. 그러나 그것을 깨닫지 못했습니다. 그러나'if (session.getState(). equals (SessionState.CREATED_TOKEN_LOADED)) '문이 만족스럽지 않으면, 그 로그인을 건너 뛰고 다른 로그인을 사용했습니다. 올바른 권한없이 거기에 있다는 것을 깨달았습니다. 계속해서 계속 던지고있는 예외에 대해서도 당신은 옳았습니다. 도와 줘서 고마워! – Peter

+0

@Peter 이것이 Robbie에게 현상금을 주면 답답하다.) 건배 – Dyna

+0

@Dyna는 알림을 보내 주셔서 감사합니다. 현상금을 잊어 버렸으므로 현상금이 올바르게 표시되지 않습니다. – Peter

관련 문제