不保留facebook访问令牌的新活动

时间:2015-11-14 16:05:00

标签: java android facebook

基本上我在我的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。

由于

1 个答案:

答案 0 :(得分:0)

我最终做的是将令牌保存在sharedpreferences中,然后在我的应用程序中使用它。这让我可以在我的所有活动中使用我的代币。

以后是否会破坏我不确定的行。