2014-04-09 3 views
0

Я пытаюсь открыть facebook галерею, если войти в систему в фейсбуке еще я попросил facebook входа в Android с помощью facebook SDK, и я написал этот код:Facebook Войти для Android

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(); 
     } 
    } 
}); 

Он работает хорошо и получает страницу входа в систему, если она не вошла в систему, но если она зарегистрирована, тогда она запускает код рекурсивно, т.е. здесь отображается сообщение с тостом «Сессия открывается».

В чем причина. Я не могу понять ..

ответ

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

собственной недействительным onClickRequest() {

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("")); 




    } 
+0

если вы тусклый экран входа в систему обучения времени, то гасить выйти код – Ashish

+0

Session сессии = Session.getActiveSession(); \t \t \t \t \t \t \t \t session.closeAndClearTokenInformation(); \t \t MainActivity.this.session.closeAndClearTokenInformation(); \t \t \t \t android.webkit.CookieManager.getInstance(). RemoveAllCookie(); – Ashish

+0

Спасибо .. Я изменил часть вашего кода, и это сработало ... :) – Robz