簡體   English   中英

不保留facebook訪問令牌的新活動

[英]New activity not keeping facebook access token

基本上我在我的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()'在null對象引用上

我需要它做的是檢索當前登錄會話的當前登錄。 我嘗試使用“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。

謝謝

我最終做的是在共享偏好中保存令牌,然后在我的應用程序中使用它。 這讓我可以在我的所有活動中使用我的代幣。

不管它是否會在以后打破,我不確定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM