Android facebook sdk – установить разрешения для openActiveSession

Я пытаюсь интегрировать SDK Facebook в приложение Android. Я получил код из руководства Facebook. Он использует Session.openActiveSession, а затем запрашивает пользователя графика. Как я могу запросить дополнительные разрешения без использования класса LoginButton?

Session.openActiveSession(this, true, new Session.StatusCallback() { @Override public void call(Session session, SessionState state, Exception exception) { onSessionStateChange(session, state, exception); if (session.isOpened()) { Request.executeMeRequestAsync(session, new Request.GraphUserCallback() { @Override public void onCompleted(GraphUser user, Response response) { if (user != null) { // got user graph } else { // could not get user graph } } }); } } }); 

Спасибо.

Попробуй это:

 mCallback = new Session.StatusCallback() {...}; // the code you already have Session.OpenRequest request = new Session.OpenRequest(mContext); request.setPermissions(Arrays.asList("email", "user_birthday")); request.setCallback(mCallback ); // get active session Session mFacebookSession = Session.getActiveSession(); if (mFacebookSession == null || mFacebookSession.isClosed()) { mFacebookSession = new Session(mContext); Session.setActiveSession(mFacebookSession); } mFacebookSession.openForRead(request); 

Это решает проблему, используя разворот и расширенный прорыв только один раз. Facebook SDK 3.5

 Session s = new Session(this); Session.setActiveSession(s); Session.OpenRequest request = new Session.OpenRequest(this); request.setPermissions(Arrays.asList("basic_info","email")); request.setCallback( new Session.StatusCallback() { // callback when session changes state @Override public void call(Session session, SessionState state, Exception exception) { if (session.isOpened()) { Request.newMeRequest(session, new Request.GraphUserCallback() { @Override public void onCompleted(GraphUser user, Response response) { if (user != null) { Toast.makeText(getApplicationContext(), "User email is:"+user.getProperty("email"), Toast.LENGTH_SHORT).show(); } else { Toast.makeText(getApplicationContext(), "Error User Null", Toast.LENGTH_SHORT).show(); } } }).executeAsync(); } } }); //end of call; s.openForRead(request); //now do the request above