私はこのFacebook SDKを数日前から習得しようとしています。私は学校プロジェクトの基本的なアプリケーションを構築しています。ユーザーが初めてログインすると、Facebookはメールとパスワードを入力してサインインすることができます。ユーザーが「ログアウト」をクリックするとログアウトします。 。 私の知る限り。クリックサインオンに戻ると、自動的にその最後のアカウントにログインします。私はアカウントを切り替えるオプションを与えません。どうすればこの問題を解決できますか?Facebook SDKを使用しているときにログアウトできない - Android
EDIT ***ログインした後、ログアウトしてもう一度ログインすると、「以前は「APP NAME」にFacebookでログインしています。続行しますか?」
唯一の選択肢は、キャンセルして続行することです。私は別の人とサインインしようとすることさえできません!これは私の問題です。もし誰かがそれを解決することができればそれはすばらしいでしょう!その間に私はあなたがFacebookのSDKでAccessTokenクラスを用いてログインすることができます異なるもの
package example.com.demo_app;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import com.facebook.AccessToken;
import com.facebook.AccessTokenTracker;
import com.facebook.CallbackManager;
import com.facebook.FacebookActivity;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.FacebookSdk;
import com.facebook.GraphRequest;
import com.facebook.GraphResponse;
import com.facebook.appevents.AppEventsLogger;
import com.facebook.login.LoginBehavior;
import com.facebook.login.LoginManager;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;
import com.facebook.login.widget.ProfilePictureView;
import org.json.JSONException;
import org.json.JSONObject;
import org.w3c.dom.Text;
public class MainActivity extends AppCompatActivity {
LoginButton fbButton;
CallbackManager callBackManager;
TextView nameBox;
TextView emailBox;
TextView idBox;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fbButton = (LoginButton)findViewById(R.id.login_button);
fbButton.setReadPermissions("email", "public_profile");
callBackManager = CallbackManager.Factory.create();
fbButton.registerCallback(callBackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
String user_id = loginResult.getAccessToken().getUserId();
GraphRequest graphRequest = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
if (object != null)
{
displayInfo(object);
}
else {
LoginManager.getInstance().logOut();
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "first_name, last_name, email, id");
graphRequest.setParameters(parameters);
graphRequest.executeAsync();
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException error) {
}
});
}
public void displayInfo(JSONObject object)
{
String first_name = "";
String last_name = "";
String email = "";
String id = "";
try {
first_name = object.getString("first_name");
last_name = object.getString("last_name");
email = object.getString("email");
id = object.getString("id");
} catch (JSONException e) {
e.printStackTrace();
}
nameBox = (TextView)findViewById(R.id.txtFullName);
emailBox = (TextView)findViewById(R.id.txtEmail);
idBox = (TextView)findViewById(R.id.txtID);
nameBox.setText(first_name+ " " +last_name);
emailBox.setText(email);
idBox.setText(id);
ProfilePictureView profilePictureView;
profilePictureView = (ProfilePictureView) findViewById(R.id.friendProfilePicture);
profilePictureView.setProfileId(id);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callBackManager.onActivityResult(requestCode, resultCode, data);
}
}
唯一の問題は、技術的に「ログアウト」ボタンが私によって生成されていないことです。 Facebook SDKは、ユーザーがサインインすると自動的にログアウトボタンを生成するので、既にログアウトしたボタンを呼び出す方法については100%確信していません。 – nquaisc
Listen up。ユーザーがサインインすると、他のアクティビティに誘導された可能性があります。そこに選択したボタンを追加し、その上にonClickListenerを追加します。上記の方法を呼び出すと、(上記のコードのように)ユーザーをログイン画面にリダイレクトします。 FBのログアウトボタンがログインに戻りました。これは、あなたがLoginManagerを呼び出して設定するために起こったものです。 –
答えが正しいと答えてください。ありがとう –