2016-09-02 3 views
0

사용자가 내 안드로이드 응용 프로그램에 페이스 북으로 로그인되어 있는지 확인하는 방법을 명확히하는 데 어려움을 겪고 있습니다.안드로이드, 사용자가 페이스 북에 로그인되어 있는지 확인하십시오

당신은 사람이 이미 AccessToken.getCurrentAccessToken()와 Profile.getCurrentProfile() 확인하여 로그인하면 볼 수 있습니다

공식 페이스 북 문서는 말한다.

그러나 AccessToken.getCurrentAccessToken()은 SDK 초기화가 완료된 경우에만 사용할 수 있습니다. 지금까지 내가 이해, 이러한 접근 방식은 모든 시간을 작동하지 않을 수 있습니다 :

FacebookSdk.sdkInitialize(this.getApplicationContext()); 
if (AccessToken.getCurrentAccessToken() != null) { 
    //good 
} 

, 때문에 그것은이 질문에 설명 된대로 :

How can i find my current login status - facebook API android

그것은 말한다 AccessTokenTracker() 콜백 onCurrentAccessTokenChanged() 수 있음 따라서 비동기로 해고 당하면이 경우에 null 값을 getCurrentAccessToken()으로 얻을 수 있습니다 (단순히 경주가 풀릴 것입니다).

그래서 바로 SDK 초기화 후 getCurrentAccessTokennull 값을 갖는의 기회가 있으며, 경우, 지금까지의 내가 아는 한, onCurrentAccessTokenChanged()이 ... 사용자가 모든 로그인, 그렇게하지 않을 경우 실행하지 마십시오 방법을 확인하는 경우 그게 뭐야? 이것은 나에게 교착 상태처럼 보입니다. 내가 뭔가를 놓친거야?

내가 한 일 : 일반적으로 로그인을 구현 한 공식 FB 매뉴얼을 보았습니다.하지만이 문제로 인해 두통이 생깁니다. 또한 다른 SO 질문을 확인하십시오. 그러나 모든 솔루션은 내가 원하는 것을 설명하지 않습니다.

public boolean isLoggedIn() { 
AccessToken accessToken = AccessToken.getCurrentAccessToken(); 
return accessToken != null; 
} 

또는이 확인 :

는 또한, 내가 응용 프로그램 시작에이를 확인하려면, 그래서 onResume처럼 그런 일이없는, onStart

답변

0

이 시도 login fb

+0

음, 이러한 솔루션은 이미 내 게시물에 제공되었지만 이러한 작업의 비동기 특성과 관련된 질문에 대한 대답이 아닙니다. 세부 사항을 제공해 주시겠습니까? 왜 이것이 항상 제공되는 정보를 기반으로 작동합니까? – rofl

+0

은 RequestAsyncTask 클래스를 사용합니다. – huk

1

사용자가 로그인했는지 여부를 확인하기 위해 수행중인 작업 : 1- 메서드 "OnCreate"에서 SDK 및 Facebook 콜백 관리자를 초기화합니다. 2- 내용보기 설정 3 토큰 및 프로필 추적기를 설정 한 다음 시작하십시오. 4 로그인 버튼 facebook 이벤트를 가져 오는 UI 설정. 방법에 5 "OnResume"나는이를 확인 : 사용자가 설정 추적하는 방법에 로그온 한 경우

if(Profile.getCurrentProfile() != null && AccessToken.getCurrentAccessToken() != null){ 
    //You are logged 
} 

는 또한 당신은 내가 확인. 은 내가 예,이 방법은 일반적으로 일하는 것이 아니라

+0

예,이 접근 방식은 정상적으로 작동하지만 사용자가 로그인되어있는 경우 응용 프로그램이 시작될 때이를 확인하려고합니다. 따라서 onResume과 같은 것은 사용할 수 없습니다. – rofl

0

자신을 표현했다 좋겠지 만, 사용자가 응용 프로그램이 시작될 때, 로그인하면 내가 확인하고 싶은, 그래서 onResume 같은 그런 것들이 사용할 수 없습니다.

내가 무엇을했는지 확인하기 위해 스플래시 활동을 만들고 사용자가 로그인했는지 확인합니다 (예, 스플래시 활동에서 SDK를 초기화했습니다). 그 결과에 따라 로그인 활동 또는 기본 활동을 시작하십시오.

관련 문제