我使用 Facebook Sdk 4.0.1 成功登录并转到第二个活动,即注销活动,我单击注销按钮并再次重定向到主要活动,但实际上我再次到达那里注销按钮,这是我的登录按钮,它更改为 Facebook SDK 注销。所以请告诉我我怎么了。请告诉我如何在下一个活动中获得注销按钮
public class MainActivity extends FragmentActivity{
LoginButton loginButton;
FacebookSdk mFacebook;
private static final String[] PERMISSIONS = new String[] {"public_profile", "user_photos", "read_stream", "email" };
CallbackManager callbackManager;
SharedPreferences preferences;
String userName, emailId, userFacebookId, userId;
URL image_value;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
setContentView(R.layout.activity_main);
System.out.println("Inside onCreate ");
preferences = getSharedPreferences("MyData", Context.MODE_WORLD_WRITEABLE);
loginButton = (LoginButton) findViewById(R.id.login_button);
loginButton.setReadPermissions(PERMISSIONS);
// If using in a fragment
// loginButton.setFragment();
// Callback registration
LoginManager.getInstance().registerCallback(callbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
SharedPreferences.Editor editor = preferences.edit();
editor.putString("accessToken", loginResult.getAccessToken().toString());
editor.apply();
GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject jsonObject, GraphResponse graphResponse) {
try {
System.out.println("Inside onSuccess ");
userFacebookId = graphResponse.getJSONObject().getString("id");
userName = graphResponse.getJSONObject().getString("name");
emailId = graphResponse.getJSONObject().getString("email");
userId = graphResponse.getJSONObject().getString("link");
try {
image_value = new URL("http://graph.facebook.com/" + userFacebookId + "/picture?type=large");
} catch (MalformedURLException e) {
e.printStackTrace();
}
SharedPreferences.Editor editor = preferences.edit();
editor.putString("userFacebookId", userFacebookId);
editor.putString("userName", userName);
editor.putString("emailId", emailId);
editor.putString("userId", userId);
editor.putString("image_value", image_value.toString());
editor.apply();
Intent intent = new Intent(MainActivity.this, logOut.class);
startActivity(intent);
} catch (org.json.JSONException e) {
e.printStackTrace();
}
}
});
request.executeAsync();
}
@Override
public void onCancel() {
System.out.println("Inside onCancel ");
// App code
}
@Override
public void onError(FacebookException exception) {
System.out.println("Inside Error " + exception);
// App code
}
});
}
@Override
public void onBackPressed() {
super.onBackPressed();
finish();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
System.out.println("Inside onActivityResult "+resultCode);
}
}
在第二个活动注销方法中,使用以下行要求LoginManager
注销为
LoginManager.getInstance().logOut();
因此,它将在您的主要活动中的Facebook登录按钮上显示"登录"文本。