У меня есть приложение для Android, и я пытаюсь использовать facebook sdk (версия 4.1.0), чтобы получить токен и логин. Вот мой код:
public class LoginActivity extends Activity {
private CallbackManager callbackManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
AccessToken accessToken = loginResult.getAccessToken();
Log.v(TAG, "Facebook login was successful");
String authToken = accessToken.getToken();
// User authToken here:
}
@Override
public void onCancel() {
Log.v(TAG, "Facebook login was canceled");
}
@Override
public void onError(FacebookException e) {
Log.e(TAG, "Facebook login failed: " + e.getMessage());
}
});
Button facebook_button = (Button) findViewById(R.id.fbButton);
facebook_button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
LoginManager.getInstance().logInWithReadPermissions(getActivity(), Arrays.asList("public_profile"));
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
}
Вызывается код, переведенный на приложение facebook и обратно, и OnActivityResult. Однако каждый раз, когда вызывается метод обратного вызова onCancel(). Обратите внимание, что я не использую LoginButton, предоставленный facebook, и у меня есть собственная кнопка (хотя я пробовал этот подход, и результат был таким же). Я дважды и тройной проверил свой идентификатор приложения и keyhash, сгенерированные приложением, и они выглядят корректно. Итак, я не знаю, что еще может быть неправильно. Любая помощь на этом этапе очень ценится.