基本上我在我的Android应用程序中使用facebook sdk。但是,在我的记分牌活动中,我需要使用访问令牌来获得我的高分结果。
但每次我尝试使用
accessToken = AccessToken.getCurrentAccessToken();
它是null或我的应用程序崩溃,因为它是一个空指针错误。
java.lang.RuntimeException:无法启动活动ComponentInfo {wmrapplications.plankoff / wmrapplications.plankoff.ScoreBoard}:java.lang.NullPointerException:尝试调用虚方法' java.lang.String com.facebook。 AccessToken.getToken()'在空对象引用上
我需要它做的是检索当前登录会话的当前登录。 我尝试使用" isloggedin"方法
public boolean isLoggedIn() {
accessToken = AccessToken.getCurrentAccessToken();
if (accessToken == null) {
Toast.makeText(getApplicationContext(), "no access token", Toast.LENGTH_LONG).show();
accessTokenTracker = new AccessTokenTracker() {
@Override
protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken, AccessToken currentAccessToken) {
// fetchUserInfo();
}
};
callbackManager = CallbackManager.Factory.create();
} else {
Toast.makeText(getApplicationContext(), " access token", Toast.LENGTH_LONG).show();
Token = accessToken.getToken().toString();
}
return accessToken != null;
}
以及fetchinfo函数
private void fetchUserInfo() {
accessToken = AccessToken.getCurrentAccessToken();
Toast.makeText(getApplicationContext(),
"Relogin successful?" + AccessToken.getCurrentAccessToken().getToken().toString(), Toast.LENGTH_LONG)
.show();
if (accessToken != null) {
GraphRequest request = GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject me, GraphResponse response) {
// LinkFacebook(socialService);
// FindFriends(socialService);
Token = accessToken.getToken().toString();
}
});
Bundle parameters = new Bundle();
parameters.putString(FIELDS, REQUEST_FIELDS);
request.setParameters(parameters);
GraphRequest.executeBatchAsync(request);
} else {
Toast.makeText(getApplicationContext(), "Relogin failed.", Toast.LENGTH_LONG).show();
}
}
但是我的accessstoken仍为null。
由于
答案 0 :(得分:0)
我最终做的是将令牌保存在sharedpreferences中,然后在我的应用程序中使用它。这让我可以在我的所有活动中使用我的代币。
以后是否会破坏我不确定的行。