2016-09-02 7 views
0

私のアンドロイドアプリケーションでFacebookにログインしているかどうかを判断するには、明確な方法を見つけるのに苦労しています。Androidの場合、ユーザーがFacebookにログインしているかどうかを確認してください

あなたは人がすでにAccessToken.getCurrentAccessToken()とProfile.getCurrentProfile()チェックすることにより、ログインしているかどうかを確認することができます

公式のFacebookのドキュメントでは、と述べています。

ただし、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の質問をチェックしてください、しかし、すべてのソリューションは私が欲しいものを説明していません。

また、私は、アプリケーションの起動時にこれを確認したいので、私はonResumeのようなものを持っていない、onStartなど

答えて

0

この試してみてください。

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

またはこれをチェック: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のようなそのようなものはありません。

私はSplashアクティビティを作成し、そのアクティビティでユーザーがサインインされているかどうかを確認します(はい、スプラッシュアクティビティでSDKを初期化しました)。その結果に応じてログインアクティビティまたはメインアクティビティを開始します。

関連する問題