android的Facebook登录

android的Facebook登录,android,facebook,facebook-graph-api,Android,Facebook,Facebook Graph Api,我正在尝试打开一个facebook图库,如果我登录了facebook,否则我要求使用facebook sdk在android中登录facebook,我编写了以下代码: Session.openActiveSession(FbGallery.this, true, new Session.StatusCallback() { @SuppressWarnings("deprecation") @Override public void call(final Session s

我正在尝试打开一个facebook图库,如果我登录了facebook,否则我要求使用facebook sdk在android中登录facebook,我编写了以下代码:

Session.openActiveSession(FbGallery.this, true, new Session.StatusCallback() {
    @SuppressWarnings("deprecation")
    @Override
    public void call(final Session session, SessionState state, Exception exception) {

        System.out.println("Session:::"+session.toString());

        if(session.isOpened()){
            session.requestNewPublishPermissions(
                    new Session.NewPermissionsRequest(FbGallery.this, "user_photos"));
            Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {

                @Override
                public void onCompleted(GraphUser user, Response response) {
                    Toast.makeText(getApplicationContext(), "Session is opened", Toast.LENGTH_SHORT).show();
                }
            });
        }
        else{
            Toast.makeText(getApplicationContext(), "Gone to else", Toast.LENGTH_SHORT).show();
        }
    }
});
它工作得很好,如果没有登录,它会进入登录页面,但是如果已经登录,它会递归地运行代码,例如,这里的toast消息“Session is opened”


原因是什么。我不明白..

私人void onClickRequest()
if (session.isOpened())
 {
 Toast.makeText(getApplicationContext(), "Already Login",500).show();
 onClickRequest();
 } 
else 
  {
  onClickRequest();
     session = createSession();
  }
{


Session Session=Session.getActiveSession();Session.closeAndClearTokenInformation();MainActivity.this.Session.closeAndClearTokenInformation();android.webkit.CookieManager.getInstance().removeAllCookie();谢谢..我更改了你的一些代码,它起作用了…:)有一件事要说。你的代码和我的代码几乎一样..我的代码不起作用吗???
    if (this.session.isOpened() && session!=null) 
    {
        shareDialog=new ProgressDialog(MainActivity.this);
        shareDialog.setTitle("Post ON Wall");
        shareDialog.setMessage("Wait..........");
        shareDialog.setCancelable(false);

        System.out.println("Already Logged In");

        if (session.isOpened()) {
            // make request to the /me API
            Request.executeMeRequestAsync(session, new Request.GraphUserCallback() 


            {
            // callback after Graph API response with user object
            @Override
            public void onCompleted(GraphUser user, Response response) {
            if (user != null) {

                System.out.println(user.getId()+user.getName()+"........................");
                id=user.getId();
                Toast.makeText(getApplicationContext(), session.getAccessToken(), 100).show();
            }
            }
            });
            }
        //postPhoto();
    } else {
        StatusCallback callback = new StatusCallback() {
            public void call(Session session, SessionState state,
                    Exception exception) {
                if (exception != null) {
                    new AlertDialog.Builder(MainActivity.this)
                            .setTitle("Failed Login")
                            .setMessage(exception.getMessage())
                            .setPositiveButton("Ok", null)
                            .show();
                    MainActivity.this.session = createSession();
                }
            }
        };
        pendingRequest = true;
        MainActivity.this.session = createSession();


        this.session.openForRead(new Session.OpenRequest(this)
        .setCallback(callback).setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO).setPermissions(""));




    }