1

これがfacebook me requestのコードです。ユーザーの電子メールとその他の基本的な情報を取得したいのですが、このコードはエミュレータでは問題なく動作しますが、実際のデバイスの電子メールではnull値が返されます。id,fristname... には実際の値が付属しています。どうすれば実機でメールを受信できますか?

    Request request = Request.newMeRequest(session,
            new Request.GraphUserCallback() {


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

                    if (user != null) {



                        RequestParams params = new RequestParams();

                        params.put("email",(String) user.getProperty("email"));
                        params.put("password", "");
                        params.put("facebook_id", user.getId());
                        editor.putString("facebook_id", user.getId());

                        login(params,
                                (String) user.asMap().get("email"),
                                user.getId(), user.getFirstName(),
                                user.getLastName());

                    }
                }
            });
    Bundle params = new Bundle();
    params.putString("fields", "id,email,first_name,last_name");
    request.setParameters(params);
    request.executeAsync();
4

1 に答える 1

2

ME リクエストを送信する代わりに、Facebook の LoginButton を使用し、フックを追加してユーザー情報を傍受します。

// Intercept the facebook user returned from login
facebookLoginButton.setUserInfoChangedCallback(new LoginButton.UserInfoChangedCallback() {

    @Override
    public void onUserInfoFetched(GraphUser user) {
        mFacebookUser = user;

        if (user != null) {
            LogUtils.LOGFB(TAG, "Got a Facebook user: " + user.getFirstName() +
                    " " + user.getLastName() + ", email: " + user.getProperty("email"));
        }
        else {
            LogUtils.LOGFB(TAG, "No Facebook user");
        }
    }
});

次に、電子メールを取得するための追加のアクセス許可を追加します。

facebookLoginButton.setReadPermissions(Arrays.asList(
        "email", "user_birthday", ...));
于 2014-01-03T20:00:21.093 に答える