3
我面臨一個問題,通過使用新的Facebook的SDK。在我的應用程序中,我使用過舊的sdk,並且運行正常,但現在有些東西不能正常工作。 我有一個登錄FragmentActivity它檢查用戶是否已經登錄過去,所以打開應用程序的主要活動。如果用戶未登錄,活動將顯示帶有登錄選項的片段(並且一個選項是使用Facebook登錄)。 片段含有Facebook登錄按鈕,如在文檔描述:Android的Facebook的SDK 4:檢查用戶是否已登錄
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.choose_access_type, container,
false);
fb_button = (LoginButton) view.findViewById(R.id.fb_button);
fb_button.setFragment(this);
fb_button.setReadPermissions(Arrays.asList("public_profile",
"user_friends"));
LoginManager.getInstance().logInWithPublishPermissions(this, Arrays.asList("publish_actions"));
callbackManager = CallbackManager.Factory.create();
fb_button.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
//launche main activity
}
@Override
public void onCancel() {
// App code TODO
Log.i("LOGINAFRAGMENT", "session cancel");
}
@Override
public void onError(FacebookException exception) {
// App code TODO
Log.i("LOGINAFRAGMENT", "session error");
}
});
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
,這是FragmentActivity的代碼。這項活動應該檢查用戶是否已經連接與否:
FacebookSdk.sdkInitialize(this.getApplicationContext());
AccessToken fb_token = AccessToken.getCurrentAccessToken();
if(fb_token != null) {
//already connected, launch activity
} else {
//show fragment with login button
}
現在,另外如果用戶在過去的登錄,當我打電話getCurrentAccessToken我總是得到空,所以片段顯示,Facebook的檢測的用戶登錄並且主要活動已啓動。 如果用戶wal已經登錄,我如何直接從FragmentActivity中檢查?
嘗試運行SDK附帶的HelloFacebook或Scrumptious示例應用程序。他們都使用getCurrentAccessToken來檢查用戶是否已經登錄。除非您在某個時刻清除令牌,否則您不應該得到空值。 – 2015-04-03 16:33:40