android - 从 Facebook SDK GraphUserCallback 获取出生日期和城镇/城市

标签 android facebook facebook-android-sdk

我在我的应用程序中设置了 facebook 登录,如下所示,我的想法是登录然后执行 GraphUserCallback 这样我们就可以获得使用信息,然后传递到我自己的注册系统,这样用户可以为我的应用程序设置帐户。

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

                    @Override
                    public void onCompleted(GraphUser user,
                            Response response) {

                        if (dialog != null && dialog.isShowing()) {
                            dialog.dismiss();
                        }
                        if (user != null) {
                            Map<String, Object> responseMap = new HashMap<String, Object>();
                            GraphObject graphObject = response
                                    .getGraphObject();
                            responseMap = graphObject.asMap();
                            Log.i("FbLogin", "Response Map KeySet - "
                                    + responseMap.keySet());

                            Session session = Session.getActiveSession();
                            String email = null;
                            String token = null;
                            String username = null;
                            String gender = null;
                            String birthday = null;
                            if (responseMap.get("email") != null) {
                                email = responseMap.get("email").toString();
                                username = responseMap.get("first_name").toString()+" "+responseMap.get("last_name").toString();
                                gender = responseMap.get("gender").toString();
                                token = session.getAccessToken();
                                /*birthday = responseMap.get("user_birthday").toString();

                                Context context = getApplicationContext();
                                int duration = Toast.LENGTH_SHORT;

                                Toast toast = Toast.makeText(context, birthday, duration);
                                toast.show();*/

                                Intent i = new Intent(LogIn.this, FbLogin2Activity.class);
                                i.putExtra("Email", email);
                                i.putExtra("Token", token);
                                i.putExtra("Username", username);
                                i.putExtra("Gender", gender);
                                startActivity(i);
                            } else {
                                // Clear all session info & ask user to
                                // login again
                                if (session != null) {
                                    session.closeAndClearTokenInformation();
                                }
                            }
                        }
                    }
                });

当用户点击“登录”按钮时:

fblogin.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                Session session = Session.getActiveSession();
                if (session == null) {
                    Session.openActiveSession(LogIn.this, true,
                            statusCallback);
                } else if (!session.isOpened()) {
                    session.openForRead(new Session.OpenRequest(
                            LogIn.this).setCallback(statusCallback)
                            .setPermissions(permissions)
                            );
                }
                /*Intent i = new Intent(getApplicationContext(), FbLoginActivity.class);
                startActivity(i);*/
            }
        });

我的权限是:

/***** FB Permissions *****/
permissions = new ArrayList<String>();
permissions.add("email");
permissions.add("user_birthday");
permissions.add("user_location");
/***** End FB Permissions *****/

用户电子邮件已返回并有效,但用户电子邮件或位置均不在 graphusecallback 响应中。

不确定我是否已经发布了所有需要的东西,所以让我知道,但我无法弄清楚为什么它没有返回所有内容

最佳答案

用户的生日将在 birthday 字段中,用户的位置将在 location 字段中(与 user_birthday用户位置)。所以

birthday = responseMap.get("birthday").toString();
location = responseMap.get("location").get("name").toString();

应该可以。

关于android - 从 Facebook SDK GraphUserCallback 获取出生日期和城镇/城市,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19458180/

相关文章:

javascript - facebook 发布到墙上弹出窗口,替换 "Write something...."

ios - 身份验证步骤后重定向之前 iOS 模拟器上的 "No Internet connection"

android - Facebook Android SDK - 应用程序请求不会重定向到 Google Play 商店

android - 在 Facebook Android SDK 4.0 中为按钮设置登录/注销文本?

Android Facebook SDK 3.0 认证

java - 如何显示整个 double 值?

android - 从链接下载并安装 apk

android - 蓝牙连接上的自动启动应用程序(android)

java - 以编程方式设置 PercentageRelativeLayout 中的宽高比

javascript - Facebook Open Graph API 调用出现问题...需要主动访问 token 吗?