Facebook不提供最新的sdk 4.4.1中的电子邮件?

时间:2015-07-23 11:18:50

标签: android facebook-login

我已经指定了“电子邮件”权限但我无法收到最新facebook sdk 4.4.1的电子邮件...如果有任何人有解决方案,那么请指导我。 提前谢谢......

public void loginToFacebook() {

    mPrefs = getPreferences(MODE_PRIVATE);
    String access_token = mPrefs.getString("access_token", null);
    long expires = mPrefs.getLong("access_expires", 0);

    if (access_token != null) {
        facebook.setAccessToken(access_token);

        btnFbLogin.setVisibility(View.INVISIBLE);

        // Making get profile button visible
        btnFbGetProfile.setVisibility(View.VISIBLE);

        // Making post to wall visible
        btnPostToWall.setVisibility(View.VISIBLE);

        // Making show access tokens button visible
        btnShowAccessTokens.setVisibility(View.VISIBLE);

        Log.d("FB Sessions", "" + facebook.isSessionValid());
    }

    if (expires != 0) {
        facebook.setAccessExpires(expires);
    }

    if (!facebook.isSessionValid()) {
        facebook.authorize(this,
                new String[] { "email", "publish_stream" },
                new DialogListener() {

                    @Override
                    public void onCancel() {
                        // Function to handle cancel event
                    }

                    @Override
                    public void onComplete(Bundle values) {
                        // Function to handle complete event
                        // Edit Preferences and update facebook acess_token
                        SharedPreferences.Editor editor = mPrefs.edit();
                        editor.putString("access_token",
                                facebook.getAccessToken());
                        editor.putLong("access_expires",
                                facebook.getAccessExpires());
                        editor.commit();

                        // Making Login button invisible
                        btnFbLogin.setVisibility(View.INVISIBLE);

                        // Making logout Button visible
                        btnFbGetProfile.setVisibility(View.VISIBLE);

                        // Making post to wall visible
                        btnPostToWall.setVisibility(View.VISIBLE);

                        // Making show access tokens button visible
                        btnShowAccessTokens.setVisibility(View.VISIBLE);
                    }

                    @Override
                    public void onError(DialogError error) {
                        // Function to handle error

                    }

                    @Override
                    public void onFacebookError(FacebookError fberror) {
                        // Function to handle Facebook errors

                    }

                });
    }
}


public void getProfileInformation() {
    mAsyncRunner.request("me", new RequestListener() {
        @Override
        public void onComplete(String response, Object state) {
            Log.d("Profile", response);
            String json = response;
            try {
                // Facebook Profile JSON data
                JSONObject profile = new JSONObject(json);

                // getting name of the user
                final String name = profile.getString("name");

                // getting email of the user
                final String email = profile.getString("email");

                runOnUiThread(new Runnable() {

                    @Override
                    public void run() {
                        Toast.makeText(getApplicationContext(), "Name: " + name + "\nEmail: " + email, Toast.LENGTH_LONG).show();
                    }

                });


            } catch (JSONException e) {
                e.printStackTrace();
            }
        }

        @Override
        public void onIOException(IOException e, Object state) {
        }

        @Override
        public void onFileNotFoundException(FileNotFoundException e,
                Object state) {
        }

        @Override
        public void onMalformedURLException(MalformedURLException e,
                Object state) {
        }

        @Override
        public void onFacebookError(FacebookError e, Object state) {
        }
    });
}

这是我的代码,但我没有收到电子邮件,你可以浏览我在哪里可以把这个放在代码下面。

2 个答案:

答案 0 :(得分:1)

您需要通过以下请求传递您需要的字段:

Bundle parameters = new Bundle();
parameters.putString("fields","id,name,email,gender, birthday");
GraphRequest.setParameters(parameters);
GraphRequest.executeAsync();

答案 1 :(得分:0)

您需要立即指定字段:https://developers.facebook.com/docs/apps/changelog#v2_4(声明字段)

例如:

/me?fields=email