其他分享
首页 > 其他分享> > 使用Android Facebook SDK V4.0获取日期

使用Android Facebook SDK V4.0获取日期

作者:互联网

我已经在我的工作室中成功安装了android sdk v4.0.
我可以使用LoginButton正确登录.

到目前为止,一切正常.

我想为每个收集我感兴趣的用户数据提供一个字符串,例如:

字符串名称= USER_NAME
字符串= USER_MAIL邮件.

与3.0 SDK正确.

使用新的SDK无法执行此操作,我按照此线程中的说明进行操作:

Android Facebook 4.0 SDK How to get Email, Date of Birth and gender of User

我在文档和各个主题中阅读了有关“使用Graph API”的内容,但无法获取所需的数据,无法将它们分配给每个字符串.

这是我的代码(就像现在一样):

LoginButton loginButton;
private CallbackManager mCallbackManager;
//...

loginButton = (LoginButton) findViewById(R.id.login_button);
loginButton.setReadPermissions(Arrays.asList("public_profile, email, user_birthday, user_friends"));
        mCallbackManager = CallbackManager.Factory.create();

//...

        loginButton.registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                // App code
                Toast.makeText(Ready.this, "Connected!", Toast.LENGTH_SHORT).show();

                GraphRequest request = GraphRequest.newMeRequest(
                        loginResult.getAccessToken(),
                        new GraphRequest.GraphJSONObjectCallback() {
                            @Override
                            public void onCompleted(
                                    JSONObject object,
                                    GraphResponse response) {
                                // Application code
                                Log.v("LoginActivity", response.toString());
                            }
                        });
                Bundle parameters = new Bundle();
                parameters.putString("fields", "id,name,email,gender, birthday");
                request.setParameters(parameters);
                request.executeAsync();

            }
            @Override
            public void onCancel() {
                // App code
                Log.v("LoginActivity", "cancel");
            }

            @Override
            public void one rror(FacebookException exception) {
                // App code
                Log.v("LoginActivity", exception.getCause().toString());
            }
        });

正如我之前所说,我与Facebook的联系非常完美,但是不知道如何将其分配给一个字符串,例如将电子邮件分配给另一个字符串.

提前非常感谢您.

解决方法:

如果您要说的是如何从GraphRequest获取名称和电子邮件,那就很简单:

            GraphRequest request = GraphRequest.newMeRequest(
                    loginResult.getAccessToken(),
                    new GraphRequest.GraphJSONObjectCallback() { 
                        @Override 
                        public void onCompleted( 
                                JSONObject object,
                                GraphResponse response) {
                            // Application code 
                            try {
                                String id=object.getString("id");
                                String name=object.getString("name");
                                String email=object.getString("email");
                                String gender=object.getString("gender");
                                String birthday=object.getString("birthday");
                                //do something with the data here
                            } catch (JSONException e) {
                                e.printStackTrace(); //something's seriously wrong here
                            }
                        } 
                    }); 
            Bundle parameters = new Bundle();
            parameters.putString("fields", "id,name,email,gender, birthday");
            request.setParameters(parameters);
            request.executeAsync();

GraphResponse包含诸如使用的HTTPConnect,遇到的任何错误等信息.假设一切都按预期进行,则只需JSONObject对象即可检索请求的数据.

标签:android,facebook-graph-api,facebook-sdk-4-0
来源: https://codeday.me/bug/20191028/1952798.html