私のアプリではFacebookのログインを実装しようとしています。私はユーザーが既にログインしているかどうかを判断するために、スプラッシュ後にIntroLoginアクティビティを持っています。ユーザーがすでにログインしている場合は、MainActivityをまっすぐにロードします。それ以外の場合は、ユーザーにログインするように依頼します。Facebook SDKを使用してログインできません
ユーザーがログインしているかどうかを判断する方法は、Android 6以降でうまくいきます。しかし、Android Lollipopでは、ユーザーがサインインした後(ユーザーがポップアップで情報を使用するための認証を取得する)、アプリケーションは終了します。ログにはFCやメッセージはありません。それはただ閉じます。ユーザーがアプリを再起動しても、再度ログインするように求められます。
マイIntroLogin活動:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_intro_login);
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
loginButton = (Button) findViewById(R.id.login_button);
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
AccessToken accessToken = AccessToken.getCurrentAccessToken();
if(accessToken != null){
finish();
}
else{
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
PopupLogin();
}
});
}
}
public void PopupLogin() {
// Set permissions
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile"));
LoginManager.getInstance().setLoginBehavior(LoginBehavior.WEB_VIEW_ONLY).registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Log.i(TAG, "onSuccess: " + loginResult);
startActivity(new Intent(IntroLogin.this, MainActivity.class));
finish();
}
@Override
public void onCancel() {
Log.d("MyApp", "Login canceled");
Snackbar snackbar = Snackbar.make(loginButton, "Login process canceled", Snackbar.LENGTH_INDEFINITE);
snackbar.getView().setBackgroundColor(ContextCompat.getColor(IntroLogin.this, R.color.colorPrimaryDark));
snackbar.setActionTextColor(ContextCompat.getColor(IntroLogin.this, R.color.pure_white));
snackbar.setAction(R.string.retry_login, new View.OnClickListener() {
@Override
public void onClick(View view) {
loginButton.performClick();
}
});
snackbar.show();
}
@Override
public void onError(FacebookException error) {
Log.d("Myapp", error.toString());
Toast.makeText(IntroLogin.this, error.getMessage(), Toast.LENGTH_LONG).show();
}
});
}
UPDATE:
私は解決策の原因を見つけなく、私は多分私は理由は見ていないことを、OnActivityResult
はロリポップで呼び出さ取得されていないと思います任意のログ。
私はアプリケーションクラスでFacebook SDKを初期化していますので、問題ではないと思います。とにかく、私はそれがまだロリポップで閉じているあなたの答えを試みた。私はOnSuccessにトースト/ログを表示しようと試みましたが、画面上でもログ上にも何も表示されません。私はかなり無知ですなぜそれが起こっている! –
FacebookのSDKバージョンは何ですか? – rafsanahmad007
私は4.18バージョンを使用しています –