【问题标题】:Getting dates with android facebook sdk v4.0使用 android facebook sdk v4.0 获取日期
【发布时间】:2015-04-29 20:19:51
【问题描述】:

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

到目前为止一切正常。

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

字符串名称 = USER_NAME String = USER_MAIL 邮件。

使用 3.0 sdk 可以正常使用。

使用新的 SDK 我不能这样做,我按照这个线程中的说明进行操作:

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

我阅读了有关“使用图形 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 onError(FacebookException exception) {
                // App code
                Log.v("LoginActivity", exception.getCause().toString());
            }
        });

正如我之前所说,我与 facebook 完美连接,但不知道如何分配,例如,将电子邮件分配给一个字符串,将名称分配给另一个字符串。

非常感谢您。

【问题讨论】:

    标签: android facebook-graph-api facebook-sdk-4.0


    【解决方案1】:

    如果您的意思是如何从 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 object 即可检索请求的数据。

    【讨论】:

    • 请注意:您必须将 object.getString() 包装在 try-catch 语句中
    【解决方案2】:

    我用于获取个人资料信息的工作代码

        callbackManager = CallbackManager.Factory.create();
        LoginManager.getInstance().registerCallback(callbackManager,
                new FacebookCallback<LoginResult>() {
                    @Override
                    public void onSuccess(LoginResult loginResult) {
    
                        profile = Profile.getCurrentProfile();
                        if(profile != null){
                                fbUserId = profile.getId();
                                editor.putString("UserName",profile.getFirstName()+" "+profile.getLastName());                            
                                editor.putString("FbId",profile.getId()); 
                                editor.putString("ProfilePicture",profile.getProfilePictureUri(20,20).toString());                           
                                editor.commit();
                        }
                    }
    
                    @Override
                    public void onCancel() {
                    }
    
                    @Override
                    public void onError(FacebookException e) {
    
                    }
    
    
                });
    

    您可以在此处跟踪配置文件更改:

        profileTracker = new ProfileTracker() {
            @Override
            protected void onCurrentProfileChanged(Profile oldProfile, Profile currentProfile) {
    
                if(currentProfile != null){
                    fbUserId = currentProfile.getId();
    
                    if(!sharedPreferences.contains("UserName")){
                        editor.putString("UserName",currentProfile.getFirstName()+" "+currentProfile.getLastName());
                    }
                    if(!sharedPreferences.contains("FbId")){
                        editor.putString("FbId",currentProfile.getId());
                    }
                    if(!sharedPreferences.contains("ProfilePicture")){
                        editor.putString("ProfilePicture",currentProfile.getProfilePictureUri(100,100).toString());
                    }
    
                    editor.commit();
                }
            }
        };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-09
      • 1970-01-01
      • 2014-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多