我的问题是我有一个可以使用facebook sdk新版本(4.0)连接到Facebook的应用程序,我希望当用户登录到facebook时,会出现一个textview并显示它的名称,并且当登出时点击 textview消失。
第一部分已完成,我可以获得我想要的数据:
btnLoginButton.registerCallback(callbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
fBLogInClicked = true;
GraphRequest.newMeRequest(loginResult.getAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object,
GraphResponse response) {
try {
String jsonresult = String
.valueOf(object);
String str_firstname = object .getString("first_name");
String str_lastname = object
.getString("last_name");
fullName = str_firstname + " "
+ str_lastname;
} catch (JSONException e) {
e.printStackTrace();
}
if (fullName != null) {
txtFBEmail
.setVisibility(View.VISIBLE);
txtFBEmail.setText(fullName);
}
}
}
}).executeAsync();
}
但是在退出后我不知道如何理解点击退出然后设置txtFBEmail的可见性。
我在onCreate()上尝试了这个代码,但是当我重新启动应用程序部分有用时,当注销点击时我无法让命令消失textview。:
AccessToken fb_token = AccessToken.getCurrentAccessToken();
if(fb_token == null) {
txtFBEmail.setVisibility(View.GONE);
}
答案 0 :(得分:2)
这种方法可以帮助您完成点击注销的确切时间:
accessTokenTracker = new AccessTokenTracker() {
@Override
protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken,
AccessToken currentAccessToken) {
if (currentAccessToken == null) {
//write your code here what to do when user clicks on facebook logout
checkLoggedInProfile();
}
}
};
答案 1 :(得分:0)
将此代码用于facebook sdk 4。
profile = Profile.getCurrentProfile().getCurrentProfile();
if (profile != null) {
// user has logged in
txtFBEmail.setVisibility(View.visible);
} else {
// user has not logged in
txtFBEmail.setVisibility(View.GONE);
}
有关新facebook-sdk 4集成的更多信息,您可以在此处查看我的答案。 Facebook Login with SDK4