Я обновляю свое использование SDK для Facebook до последней версии. Следующий код prety многократно поднимается по строкам из собственных примеров Facebook, которые можно найти здесь: https://developers.facebook.com/docs/facebook-login/android/v2.3
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.FacebookSdk;
import com.facebook.login.LoginManager;
import com.facebook.login.LoginResult;
import java.util.Arrays;
public class TestFb extends FragmentActivity{
CallbackManager callbackManager;
FacebookController fbController;
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
fbController = FacebookController.getInstance(this);
FacebookSdk.sdkInitialize(getApplicationContext());
final LoginManager loginManager = LoginManager.getInstance();
callbackManager = CallbackManager.Factory.create();
loginManager.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
String userId = loginResult.getAccessToken().getUserId();
String token = loginResult.getAccessToken().getToken();
Log.d("fb", "ID: " + userId + " Token: "+ token);
}
@Override
public void onCancel() {
finish();
}
@Override
public void onError(FacebookException e) {
Log.d("fb", "Exception: " + e.getMessage());
}
});
loginManager.logInWithReadPermissions(this, Arrays.asList(new String[]{"email", "user_likes"}));
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
}
Проблема заключается в том, что это не работает, когда пользователь уже вошел в приложение facebook на своем телефоне. В этом случае это приводит к ошибке "Пользователь, зарегистрированный как пользователь Facebook".
Я бы подумал, что, учитывая, что на устройстве уже есть активная учетная запись Facebook, нельзя создать новую. Но если это так, я должен получить идентификатор пользователя и токен из существующей учетной записи? Кажется, я не мог найти упоминания об этой проблеме на страницах документации в Facebook.