Man*_*gde 9 android facebook logout facebook-graph-api android-facebook
我正在开发一个应用程序,其中我在自定义按钮上进行 Facebook 身份验证。我做的代码如下:
首先,我在我的活动 onCreate() 中将 facebook SDK 初始化为:
// Facebook
FacebookSdk.sdkInitialize(this);
Run Code Online (Sandbox Code Playgroud)
然后我注册回调为:
// Facebook Login
mCallbackManager = CallbackManager.Factory.create();
LoginManager.getInstance().registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
// Get facebook data from login
try {
Bundle bundle = new Bundle();
String id = object.getString("id");
URL profile_pic = null;
try {
profile_pic = new URL("https://graph.facebook.com/" + id + "/picture?type=large");
bundle.putString("profile_pic", profile_pic.toString());
} catch (MalformedURLException e) {
e.printStackTrace();
}
String firstName = object.getString("first_name");
String lastName = object.getString("last_name");
} catch(JSONException e) {
Log.d("FB","Error parsing JSON");
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id, first_name, last_name"); // Parámetros que pedimos a facebook
request.setParameters(parameters);
request.executeAsync();
}
@Override
public void onCancel() {
Toast.makeText(LoginScreenActivity.this, "Login Cancel", Toast.LENGTH_LONG).show();
}
@Override
public void onError(FacebookException exception) {
Toast.makeText(LoginScreenActivity.this, exception.getMessage(), Toast.LENGTH_LONG).show();
}
});
Run Code Online (Sandbox Code Playgroud)
在我的自定义按钮上单击:
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile", "user_friends", "email"));
Run Code Online (Sandbox Code Playgroud)
活动结果代码是:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// Facebook
if (mCallbackManager.onActivityResult(requestCode, resultCode, data)) {
return;
}
}
Run Code Online (Sandbox Code Playgroud)
这工作正常。我完成了其他活动的注销代码:
LoginManager.getInstance().logOut();
Run Code Online (Sandbox Code Playgroud)
问题是:当我尝试再次使用 facebook登录时,它并没有要求我使用不同的 facebook 用户凭据登录。应用程序直接使用以前的登录详细信息进行登录。
我缺少什么?我现在该怎么办。
请指导我。在此先感谢您提出宝贵的建议。
| 归档时间: |
|
| 查看次数: |
1547 次 |
| 最近记录: |