3

Android アプリケーションで Facebook ユーザーのログインに問題があります。ユーザーに自分の Facebook アカウントを使用してシステムにログインしてもらいたいのですが、ログイン ボタンをクリックすると Facebook ネイティブ アプリが起動し、ユーザーが電子メールとパスワードを入力すると、ネイティブ アプリが閉じて、アプリが再び起動します。このログイン プロセスにネイティブ アプリを使用したくありません。Facebook ネイティブ アプリを持たない他の電話と同じように、Facebook ログイン ポップアップを開きたいのです。

これどうやってするの?ありがとう

編集:

ログインには以下の方法を使用します

protected void loginToFacebook()
{


    if( !mFacebook.isSessionValid() ) {
        Toast.makeText(mActivity, "logining", Toast.LENGTH_SHORT).show();
        mFacebook.authorize(mActivity,permissions, new LoginDialogListener());
    }
    else { 
        try {
            JSONObject json = Util.parseJson(mFacebook.request("me"));
            String facebookID = json.getString("id");
            String firstName = json.getString("first_name");
            String lastName = json.getString("last_name");
            String email = json.getString("email");
            Toast.makeText(mActivity,  mFacebook.getAccessToken()+email+"-" + firstName + " " + lastName + ". No need to re-authorize.", Toast.LENGTH_SHORT).show();

            appState.mFbToken = mFacebook.getAccessToken();
            appState.mFbEmail = email;
            mFacebookListener.onFacebookLoginSelected();

        }
        catch( Exception error ) {
            Toast.makeText( mActivity, error.toString(), Toast.LENGTH_SHORT).show();
        }
    }

}

応答を聞くため

public final class LoginDialogListener implements DialogListener {
    public void onComplete(Bundle values) {
        try {
            //The user has logged in, so now you can query and use their Facebook info
            JSONObject json = Util.parseJson(mFacebook.request("me"));
            String facebookID = json.getString("id");
            String firstName = json.getString("first_name");
            String lastName = json.getString("last_name");
            String email = json.getString("email");
            Toast.makeText( mActivity, mFacebook.getAccessToken() +email+"-" +  firstName + " " + lastName + "!", Toast.LENGTH_SHORT).show();
            SessionStore.save(mFacebook, mActivity);

            appState.mFbToken = mFacebook.getAccessToken();
            appState.mFbEmail = email;
            mFacebookListener.onFacebookLoginSelected();


        }
        catch( Exception error ) {
            Toast.makeText( mActivity, error.toString(), Toast.LENGTH_SHORT).show();
        }
    }

    public void onFacebookError(FacebookError error) {
        Toast.makeText( mActivity, "Something went wrong. Please try again.", Toast.LENGTH_LONG).show();
    }

    public void onError(DialogError error) {
        Toast.makeText( mActivity, "Something went wrong. Please try again.", Toast.LENGTH_LONG).show();
    }

    public void onCancel() {
        Toast.makeText( mActivity, "Something went wrong. Please try again.", Toast.LENGTH_LONG).show();
    }
}

ネイティブ アプリが起動すると、dialoglistener は機能しませんが、Web ベースのログイン ポップアップが起動すると、リスナーは正常に機能します。

何か案が?

4

4 に答える 4

6

アプリケーションの以下のコードを更新してください。

mFacebook.authorize(mActivity, permissions, Facebook.FORCE_DIALOG_AUTH,
            new LoginDialogListener());

それ以外の

mFacebook.authorize(mActivity, permissions, new LoginDialogListener());

詳細については、以下のリンクを参照してください

Facebookログインの問題

于 2012-08-08T08:37:10.847 に答える
0

これは可能だと思いますが、残念ながらその方法を忘れてしまいました。しかし、私が覚えている限りでは、ログイン ダイアログを強制的に表示する必要があります。私が間違っていなければ、ブール値のパラメーターをダイアログに設定して、強制的に表示する必要があります。

于 2012-08-08T08:06:37.150 に答える
0

iOS と Android は、シングル サインオン (SSO) と呼ばれるものを使用します。これは、サード パーティのアプリで Facebook を使用しようとすると、簡単にログインできるように Facebook アプリを起動することを意味します。ユーザーが Facebook アプリをインストールしている場合、常にログインのためにアプリが起動されます。これを回避する方法はありません。

実際には、ユーザーにとって簡単にするためにあります。ユーザーは通常、すでにアプリにログインしているため、サードパーティの FB アプリを使用する場合は、1 回のタッチまたはタップで承認して使用できます。FB アプリを持っていないユーザーには、Web ベースのログイン ページが表示されます。

于 2012-08-08T08:08:14.343 に答える
0

SSO を有効にしないでください。これで問題が解決するはずです。

于 2012-08-08T08:16:40.120 に答える