0

我正在使用 Facebook 的官方 Android SDK,并且我是 Facebook 上某个应用的管理员。

我读到默认情况下,该应用程序处于沙盒模式,除了管理员和开发人员之外,没有人可以访问它。我正在使用它在我的 android 应用程序中添加 Facebook 登录功能。但是,我添加了我的朋友,他们作为开发人员与我一起开发应用程序,但他们无法使用应用程序中的帐户凭据通过 Facebook 登录。我从 Facebook 的应用程序设置中禁用了应用程序的沙盒模式,但他们仍然无法访问登录设施。一旦他们点击 Facebook 登录按钮,他们就会被重定向到相同的活动,而不会发生任何事情,而在我的情况下,我成功登录并且应用程序正常运行。

为了使其公开,我需要做任何额外的设置吗?

谢谢 :)

4

1 回答 1

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

            // callback when session changes state
            @Override
            public void call(Session session, SessionState state,
                    Exception exception) {
                if (session.isOpened()) {
                    // make request to the /me API

                    List<String> permissions = session.getPermissions();
                    if (!isSubsetOf(PERMISSIONS, permissions)) {
                        pendingPublishReauthorization = true;
                        Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(
                                RegisterActivity.this, PERMISSIONS);
                        session.requestNewReadPermissions(newPermissionsRequest);
                        return;
                    }
                    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) {
                                Toast.makeText(
                                        RegisterActivity.this
                                        .getApplicationContext(),
                                        "Facebook Error",
                                        Toast.LENGTH_LONG).show();

                            } else {
                                Toast.makeText(
                                        RegisterActivity.this
                                        .getApplicationContext(),
                                        user.getName()
                                        + " Logged in Successfully.",
                                        Toast.LENGTH_LONG).show();
                                GraphUser abc = user;

                                id = user.getId();
                                name = user.getName();
                                gender = user.getProperty("gender")
                                        .toString();
                                editname.setText(name);
                                username.setText(user.getUsername());
                                JSONObject jo = user
                                        .getInnerJSONObject();
                                Log.d("Details", jo.toString());
                                try {
                                    emailid.setText(user
                                            .getProperty("email")
                                            .toString());
                                } catch (Exception e1) {
                                    // TODO Auto-generated catch
                                    // block
                                    e1.printStackTrace();
                                }

                                try {
                                    location = user.getLocation()
                                            .getProperty("name")
                                            .toString();
                                } catch (Exception e) {

                                    e.printStackTrace();
                                }



                            }

                            return;
                        }

                    });

                }
            }
        });

放上ActivityResult方法

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

isSubsetoff()方法

   private boolean isSubsetOf(Collection<String> subset,
        Collection<String> superset) {
    for (String string : subset) {
        if (!superset.contains(string)) {
            return false;
        }
    }
    return true;
}

以及根据您的需要的权限

  private static final List<String> PERMISSIONS = Arrays.asList("email",
        "user_about_me", "user_location", "user_checkins");
于 2013-07-24T17:54:04.433 回答