为什么我在 Facebook 与 sdk 4.0.1 的集成中没有在 Next Activity 中获得注销按钮
Why i didn't get Logout Button in Next Activity in Facebook Integration with sdk 4.0.1
我使用 Facebook Sdk 4.0.1 成功登录并转到第二个 activity 即注销 activity 我单击注销按钮并再次重定向到 Main activity 但实际上我到了那里再次注销按钮,这是我的登录按钮,通过 Facebook Sdk 更改为注销。所以请告诉我我怎么了。
请告诉我如何在我的 Next Activity
中获得注销按钮
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);
}
}
在第二个 activity 注销方法中,使用以下行要求 LoginManager
注销为
LoginManager.getInstance().logOut();
因此它将在您的 activity 中的 facebook 登录按钮上显示 "Login" 文本。
我使用 Facebook Sdk 4.0.1 成功登录并转到第二个 activity 即注销 activity 我单击注销按钮并再次重定向到 Main activity 但实际上我到了那里再次注销按钮,这是我的登录按钮,通过 Facebook Sdk 更改为注销。所以请告诉我我怎么了。 请告诉我如何在我的 Next Activity
中获得注销按钮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);
}
}
在第二个 activity 注销方法中,使用以下行要求 LoginManager
注销为
LoginManager.getInstance().logOut();
因此它将在您的 activity 中的 facebook 登录按钮上显示 "Login" 文本。