0

当 Facebook 完成在 ActivityB 中返回我的用户数据时,我试图在 ActivityA 中触发 onActivityResults,但我没有任何运气。有没有人有任何见解?通过内部类关闭活动是否有任何限制?

public class ActivityB extends Activity {

        private static final String URL_PREFIX_FRIENDS = "https://graph.facebook.com/me/friends?access_token=";
        private Session.StatusCallback statusCallback  = new SessionStatusCallback();;// = new SessionStatusCallback();

        public class SessionStatusCallback implements Session.StatusCallback {

            //NewPermissionsRequest newPermissionsRequest = new NewPermissionsRequest(this, Arrays.asList("email"));

            @Override
            public void call(Session session, SessionState state, Exception exception) {

                session = Session.getActiveSession();

                if (session.isOpened()) //if (session.isOpened() && !isFetching)
                {


                    Request getMe = Request.newMeRequest(session, new GraphUserCallback()
                    {
                        @Override
                            public void onCompleted(GraphUser user, Response response)
                        {
                            if (user != null)
                            {

                                org.json.JSONObject graphResponse = response.getGraphObject().getInnerJSONObject();
                                String jsonData = graphResponse.toString();
                                String email = graphResponse.optString("email");
                                String id = graphResponse.optString("id");
                                String facebookName = graphResponse.optString("name");
                                Intent intent = new Intent();
                                setResult(RESULT_OK, intent);
                                finish();
                            }
                        }
                    });
                    getMe.executeAsync();
                }
            }   
        }


        @Override
        public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);



            List<String> permission=new ArrayList<String>();
            permission.add("email");

            Session session = new Session.Builder(this.getApplicationContext()).setApplicationId("40423423767677").build();
            Session.setActiveSession(session);

            if (!session.isOpened() && !session.isClosed()) {
                session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback).setPermissions(permission));
            } else {
                Session.openActiveSession(this, true, statusCallback);
            }

        }

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

0 回答 0