Androidアプリに機能があり、ユーザーはアプリを承認し、リンクを共有します。
また、ユーザーがFacebookからログアウトするためのオプションを指定する必要があり、ユーザーがintにログインしていない(またはアプリを認証していない)場合、このボタンを条件付きで無効にする必要があります。
Android SDK でAPI呼び出しが見つからないようです。これにより、ユーザーがログインしているかどうかをFBに尋ねることができます。
私が見つけたのは getAccessExpires()
:
現在のセッションの有効期限(Unixエポックからのミリ秒単位)を取得します。セッションが期限切れでないか存在しない場合は0を取得します。
セッションが0に等しいかどうかを確認する方法はありますか?それとも私が見逃しているものがありますか?
Facebook SDK 4.xバージョンには異なる方法があります:
boolean loggedIn = AccessToken.getCurrentAccessToken() != null;
または
関数を使用して
boolean loggedIn;
//...
loggedIn = isFacebookLoggedIn();
//...
public boolean isFacebookLoggedIn(){
return AccessToken.getCurrentAccessToken() != null;
}
より良い参照のためにこのリンクを確認してください https://developers.facebook.com/docs/facebook-login/Android この見出しも確認してください "アクセストークンとプロファイル」というメッセージが表示されます。「AccessToken.getCurrentAccessToken()およびProfile.getCurrentProfile()を確認することで、ユーザーがすでにログインしているかどうかを確認できます。
読者への注意:これは、新しいFB 3.0 SDKで廃止されました。
facebook.isSessionValid()
は、ユーザーがログインしている場合はtrue、ログインしていない場合はfalseを返します。
Session.getActiveSession().isOpened()
ユーザーがログインしている場合はtrue、ログインしていない場合はfalseを返します
Android Studio
compile 'com.facebook.Android:facebook-Android-sdk:4.0.1'
次に、次のようなログインを確認します。
private void facebookPost() {
//check login
AccessToken accessToken = AccessToken.getCurrentAccessToken();
if (accessToken == null) {
Log.d(TAG, ">>>" + "Signed Out");
} else {
Log.d(TAG, ">>>" + "Signed In");
}
}
@diljeetは正しかった。 https://stackoverflow.com/a/29375963/8593
また、使用
return AccessToken.getAccessToken() != null && Profile.getCurrentProfile()!=null;
常にこのように機能します。
Facebookの場合Android SDK 4.xでは、@ Diljeetによると「AccessToken.getCurrentAccessToken()」を使用する必要がありますが、彼のチェックは機能しませんでした。
アクティビティ「onCreate」:
facebookAccessToken = AccessToken.getCurrentAccessToken();
セッションがまだアクティブかどうかを確認するには(「onResume」メソッドで作成しましたが、必要な場所で実行します):
if(facebookAccessToken != null){
sessionExpired = facebookAccessToken.isExpired();
}else{
sessionExpired = true;
}
詳細は https://developers.facebook.com/docs/facebook-login/Android
同じ問題がありました。 SDK 4.0を使用した私のソリューションは次のとおりです。
まず、ログインチェックを扱うアクティビティでは、必ずこのプライマリを呼び出すようにしてください。
FacebookSdk.sdkInitialize(this.getApplicationContext());
OnCreateメソッドにこれを入れてください:
updateWithToken(AccessToken.getCurrentAccessToken());
new AccessTokenTracker() {
@Override
protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken, AccessToken newAccessToken) {
updateWithToken(newAccessToken, handler);
}
};
次に、次のメソッドを追加します:
private void updateWithToken(AccessToken currentAccessToken) {
if (currentAccessToken != null) {
fillUIWithFacebookInfos(handler);
} else {
login();
}
}
この方法は、すでにログインしているユーザーと新しくログインしたユーザーを処理します。
これは、新しいSDKで非常にうまく機能しているようです。
private boolean isFacebookLoggedIn(){
Session session = Session.getActiveSession();
if (session != null) {
//Session can be open, check for valid token
if (!session.isClosed()) {
if(!session.getAccessToken().equalsIgnoreCase("")){
return true;
}
}
}
return false;
}