Tôi có một số mã trong Hoạt động chính của tôi trong đó kêu gọi facebook lớp hoạt động đăng nhập của tôi nếu AccessToken.getCurrentAccessToken() là null:Facebook Truy cập Mã luôn luôn là null
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.Toast;
import com.facebook.AccessToken;
import com.facebook.AccessTokenTracker;
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.Profile;
import com.facebook.ProfileTracker;
import com.facebook.login.LoginManager;
import com.facebook.login.LoginResult;
import java.util.Arrays;
import matthewboyle.lurker_android.MainFeedScreen;
import matthewboyle.lurker_android.utilities.ConnectionChecker;
/**
* Created by matthewboyle on 28/05/2017.
*/
public class FacebookLogin extends AppCompatActivity {
private CallbackManager mCallbackManager;
private AccessTokenTracker accessTokenTracker;
private ProfileTracker profileTracker;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mCallbackManager = CallbackManager.Factory.create();
accessTokenTracker = new AccessTokenTracker() {
@Override
protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken, AccessToken currentAccessToken) {
Log.d("facebook", "onCurrentAccessTokenChanged");
}
};
profileTracker = new ProfileTracker() {
@Override
protected void onCurrentProfileChanged(Profile oldProfile, Profile currentProfile) {
Log.d("facebook", "onCurrentProfileChanged");
}
};
accessTokenTracker.startTracking();
profileTracker.startTracking();
LoginManager.getInstance().registerCallback(mCallbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Log.d("facebook", "in on success");
AccessToken accessToken = loginResult.getAccessToken();
Log.d("permissions", accessToken.getPermissions().toString());
Log.d("facebook", "in on success,got a token and its "+accessToken);
}
@Override
public void onCancel() {
Log.d("facebook", "in cancel");
}
@Override
public void onError(FacebookException exception) {
Log.d("facebook", "in error");
Log.d("facebook", exception.toString());
}
});
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile", "user_posts","user_likes","user_about_me","user_managed_groups","user_tagged_places"));
Log.d("facebook", "Done so redirecting with "+AccessToken.getCurrentAccessToken());
startActivity(new Intent(FacebookLogin.this,MainFeedScreen.class));
}
@Override
protected void onActivityResult(int requestCode, int responseCode, Intent intent) {
super.onActivityResult(requestCode, responseCode, intent);
//Facebook login
mCallbackManager.onActivityResult(requestCode, responseCode, intent);
}
}
Nếu tôi chạy mã này, chỉ in tuyên bố tôi get is:
Done so redirecting with null
Dường như nó không ảnh hưởng đến bất kỳ phương pháp nào khác trong lớp học.
Điều đáng nói là mã này hoạt động tốt cho đến khi tôi cài đặt lại ứng dụng. Tôi đã lên Facebook và cập nhật khóa băm trong ứng dụng của tôi nhưng điều đó dường như không giúp ích gì. Tuy nhiên, tôi không thấy bất kỳ lỗi nào do khóa băm.
Sẽ đánh giá cao bất kỳ trợ giúp nào.
Dura là đúng. Bạn phải xóa 'startActivity (new Intent (FacebookLogin.this, MainFeedScreen.class));' hoặc di chuyển nó ra lệnh 'onSuccess'. – Codus