web-dev-qa-db-ja.com

Android Facebookでのアプリケーションログインは、インストールされているFacebookアプリでは機能しません

このコードはうまく機能していますFacebookアプリをアンインストールしたときしかし、インストールされたFacebookアプリでは機能しませんでした。 Facebook SDK4.0を使用しています。

これは私のコードです

package com.example.nhp04.gqfood;
import com.facebook.AccessToken;
import com.facebook.AccessTokenTracker;
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.FacebookSdk;
import com.facebook.Profile;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;



public class Login extends AppCompatActivity implements Animation.AnimationListener {

private String info = "";
private LoginButton loginButton;
private CallbackManager callbackManager;
private AccessTokenTracker tracker;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        FacebookSdk.sdkInitialize(getApplicationContext());
        callbackManager = CallbackManager.Factory.create();
        setContentView(R.layout.activity_login);
loginButton = (LoginButton)findViewById(R.id.login_button);



loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            AccessToken accessToken = loginResult.getAccessToken();
            Profile profile = Profile.getCurrentProfile();
            info = ("User ID: " + 

    loginResult.getAccessToken().getUserId() + "\n" + "Auth Token: " + loginResult.getAccessToken().getToken());
                }

                @Override
                public void onCancel() {
                    info = ("Login attempt canceled.");
                }

                @Override
                public void onError(FacebookException e) {
                    info = ("Login attempt failed.");
                }
            });
            System.out.println(info);
            tracker = new AccessTokenTracker() {
            @Override
            protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken, AccessToken currentAccessToken) {

            }
        };
        tracker.startTracking();
    }
    }

ログインをチェックするためのこの関数

public boolean isLoggedIn() {
    AccessToken accessToken = AccessToken.getCurrentAccessToken();
    return accessToken != null;
}

これはResumeメソッドとStopメソッドで

@Override
protected void onResume() {
    super.onResume();
    if (isLoggedIn()){
        Intent home = new Intent(this, home.class);
        startActivity(home);
    }
}

@Override
protected void onStop() {
    super.onStop();
    tracker.stopTracking();
    finish();
}

そしてこれは私のonActivityResult

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        Intent home = new Intent(this, home.class);
        startActivity(home);
    } else {
        Toast.makeText(getApplicationContext(), "Unable to login please check your internet connection",Toast.LENGTH_LONG).show();
    }
}
11
Yaseen Ahmad

onActivityResult()コードはどこにありますか。 onActivityResult()では、callbackmanagerを使用する必要があります。コードの下のユーザー:

_ @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);

}
_

上記はフラグメント/アクティビティの両方で機能します。あなたが持っていることを確認してください

_1. facebook app installed on your testing device
2. In facebook developer account check whether you have mentioned 
- correct package name : refer your Android project manifestfile.xml

- check that have you mentioned correct launcher class
- Check that you have given correct debug/release hash key

3. Cross check your facebook application id and that mentioned in your manifestfile.xml facebook meta data are same
_

コード内以下を変更

setContentView(...)の後にcallbackmanagerを作成します。

以下に変更してくださいFacebookSdk.sdkInitialize(getApplicationContext()); AppEventsLogger.activateApp(this); setContentView(R.layout.activity_login); callbackManager = CallbackManager.Factory.create();

これがあなたのFacebookの問題にある場合、あなたの問題は他のものを検索するのに時間を無駄にしないでください。また、FacebookSDKのコールバックにログイン失敗メソッドを配置します。

それでも問題が解決しない場合はコメントを投稿してください

2
MobDev

FacebookのSDKバージョンを変更してください。アプリケーションをクリーンアップして再構築すると、機能します。

0
Android Student

facebookアプリでアプリを削除できます。 Facebookアプリをgo設定>>アカウント設定>>アプリ>>あなたのアプリ>>削除で開くことができるように。アプリを削除した後、アプリをアンインストールし、再インストールして、Facebookでのログインが機能しているかどうかを確認します。

0
Idrish Multani

次のようなエラーメッセージが表示された場合:エラー

無効なキーハッシュ。キーハッシュ「... 5GAvm/gHi ...」は、保存されているキーハッシュと一致しません。 https://developers.facebook.com/apps/...55 ... / でアプリのキーハッシュを構成します

次に、エラーメッセージに表示されているハッシュキーをコピーして古いものに置き換え、デバイスにインストールされているFacebookアプリで再試行します

0
Chydee