1

Facebookログインを統合する私のアプリケーションでは、Facebookログインは正常に機能しますが、毎回ログインを要求します。

私はFacebookのログインを介してログインし、アプリのリクエストを使用してアプリで正常に機能し、アプリのリクエストもFacebookのログインを要求しました。

私はそれを避けたいのですが、これを行うためのアイデアを教えてください。

ログイン用の私のコード:

Session.openActiveSession(Notication_Webview.this, true, new Session.StatusCallback() {
@Override
public void call(final Session session, SessionState state, Exception exception) {
// TODO Auto-generated method stub
if(session.isOpened()){

Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
// TODO Auto-generated method stub
if(user!=null){

try{            
userName=user.getFirstName();//obj.getString("first_name");
facebookId=user.getId();//obj.getString("id");  
}catch (Exception e) {
Log.e(tag, "getUserIdMethod--->"+e);
}

}
}
});                 
}
}
});

このアプリ リクエストのコードでは、

Session session = Session.getActiveSession();
Facebook mFb = new Facebook("app id");
Bundle params = new Bundle();
params.putString("to", userIDString);
params.putString("message", Message);
mFb.dialog(this.getParent(), "apprequests",
params, new DialogListener() {

public void onComplete(Bundle values) {
// TODO Auto-generated method stub
}

public void onFacebookError(FacebookError e) {
// TODO Auto-generated method stub
}

public void onError(DialogError e) {
// TODO Auto-generated method stub
}

public void onCancel() {
// TODO Auto-generated method stub
}
});

mFb.dialod メソッド:

 @Deprecated
    public void dialog(Context context, String action, Bundle parameters, final DialogListener listener) {
        parameters.putString("display", "touch");
        parameters.putString("redirect_uri", REDIRECT_URI);

        if (action.equals(LOGIN)) {
            parameters.putString("type", "user_agent");
            parameters.putString("client_id", mAppId);
        } else {
            parameters.putString("app_id", mAppId);
            // We do not want to add an access token when displaying the auth dialog.
            if (isSessionValid()) {
                parameters.putString(TOKEN, getAccessToken());
            }
        }

        if (context.checkCallingOrSelfPermission(Manifest.permission.INTERNET) != PackageManager.PERMISSION_GRANTED) {
            Util.showAlert(context, "Error", "Application requires permission to access the Internet");
        } else {
            new FbDialog(context, action, parameters, listener).show();
        }
    }

2 回目のログインを回避する方法を教えてください。

4

3 に答える 3

4

ユーザーがログインしたら、アクセス トークンを取得し、 SharedPreferencesを使用してデバイスに保存します。

次にユーザーがアプリを開いたときに、SharedPreference ファイルを開き、そこからアクセス トークンの値を取得します。

ストレージから値を取得したら、セッションがまだ有効かどうか、または を使用していないかどうかを確認しisSessionValid()ます。

セッションがまだ有効な場合は、ユーザーに直接ログインし (詳細を再度尋ねずに)、ユーザーがログインしたときに SharedPreferencesのアクセス トークンの値を更新するようにしてください。これにより、アクセス トークンの有効期限が延長されます。ユーザーがログインするたびに。

clear()また、ユーザーがログアウトするときは、SharedPreference ファイルを忘れないでください。

于 2013-02-18T10:28:31.757 に答える
0

ログインすると、セッションが開きます。その時点で、静的フラグを取得して更新します。フラグを確認した後、isSession() に進みます。再度ログアウトしたら、静的フラグをリセットします。

于 2013-02-18T09:48:38.617 に答える