2013-02-25 3 views
1

Я интегрировал свое приложение с логином входа в facebook. Это мой код:Facebook skd 3.0 login

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 


    Session.openActiveSession(this, true, new Session.StatusCallback() { 

     public void call(Session session, SessionState state, Exception exception) { 
     if (session.isOpened()) { 


      Request.executeMeRequestAsync(session, new Request.GraphUserCallback() { 


      public void onCompleted(GraphUser user, Response response) { 
       if (user != null) { 
       TextView t = (TextView) findViewById(R.id.text); 
       t.setText("Hello " + user.getName() + "!"); 
       } 
      } 
      }); 
     } 
     } 
    }); 
    } 

    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data); 
    }` 

в эмуляторе устройства этот код работает, но когда я пытаюсь его в моем устройстве приложение получить мне это сообщение: так, когда я нажмите кнопку ОК, то TextView не выставиться с именем пользователя. Зачем?

+0

http://www.provablackout.altervista.org/img.jpg (сообщение) – user2062413

+0

- это ваш код, размещенный внутри фрагмента или активности? – user711058

+0

в моей деятельности! – user2062413

ответ

0

мне нужны дополнительные разрешения для чтения, так что мой код выглядит следующим образом:

OpenRequest req = new OpenRequest(getActivity()).setCallback(new Session.StatusCallback() { 
     @Override 
     public void call(Session session, SessionState state, Exception exception) {     
      if (session.isOpened()) { 
       Request.executeMeRequestAsync(session, new Request.GraphUserCallback() { 
        @Override 
        public void onCompleted(GraphUser user, Response response) { 
         if (user != null) { 
          //do login stuff 
         } else { 
          //show error message 

         } 
        } 
       }); 
      } else { 
       if (exception != null) { 
        //show error 
       } 
      } 
     } 
    }); 
    req.setPermissions(Arrays.asList("email", "user_location")); 
    Session session = new Builder(getActivity()).build(); 
    Session.setActiveSession(session); 
    session.openForRead(req); 

Это внутри фрагмента, так что вы можете заменить getActivity() с this. С правильным методом onActivityResult() У меня нет проблем с FB.

+0

Когда я заменяю getActivity() с этим, у меня есть эта ошибка: 'метод setcallback не определен для типа MainActivity' – user2062413

+0

, проверьте свои скобки. Должно быть: OpenRequest req = new OpenRequest (this) .setCallback (новый Session.StatusCallback() {... – user711058

+0

Проблема не решена. В эмуляторе работает, но не на моем устройстве. У вас есть другое решение? – user2062413