Android Facebook Graph API JSONException «Нет значения для электронной почты»

Я пытаюсь интегрировать Facebook Android SDK, используя эта ссылка. Все работает отлично, за исключением того, что я получаю одно исключение JSONException при попытке получить email для зарегистрированного пользователя.

Ниже приведен логарифм, который я получаю,

07–28 16:22:37.420: W/System.err(15793): org.json.JSONException: нет значения для электронной почты 07–28 16:22:37.421: W/System.err(15793): в org.json .JSONObject.get(JSONObject.java:354) 07-28 16:22:37.421: W/System.err(15793): в org.json.JSONObject.getString(JSONObject.java:510) 07-28 16:22 :37.421: W/System.err(15793): в in.airangle.foodapp.activities.TestActivity$1$1.onCompleted(TestActivity.java:83) 07-28 16:22:37.421: W/System.err(15793) : в com.facebook.GraphRequest$1.onCompleted(GraphRequest.java:295) 07-28 16:22:37.421: W/System.err(15793): в com.facebook.GraphRequest$5.run(GraphRequest.java:1243 ) 07-28 16:22:37.421: W/System.err(15793): в android.os.Handler.handleCallback(Handler.java:615) 07-28 16:22:37.421: W/System.err(15793 ): в android.os.Handler.dispatchMessage(Handler.java:92) 07-28 16:22:37.422: W/System.err(15793): в android.os.Looper.loop(Looper.java:153) 07-28 16:22:37.422: W/System.err(15793): в android.app.ActivityThread .main(ActivityThread.java:5000) 07-28 16:22:37.422: W/System.err(15793): в java.lang.reflect.Method.invokeNative(собственный метод) 07-28 16:22:37.422: W/System.err(15793): в java.lang.reflect.Method.invoke(Method.java:511) 07-28 16:22:37.422: W/System.err(15793): в com.android.internal .os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:821) 07-28 16:22:37.423: W/System.err(15793): в com.android.internal.os.ZygoteInit.main(ZygoteInit.java: 584) 07-28 16:22:37.423: W/System.err(15793): at dalvik.system.NativeStart.main(собственный метод)

Насколько я понимаю, должен быть способ получить информацию о пользователе, используя LoginManager и GraphRequest. Если у кого-нибудь есть идея, пожалуйста, помогите мне.


person snehal_penurkar    schedule 28.07.2015    source источник
comment
Пожалуйста, напишите, что вы пробовали до сих пор. Кроме того, не у каждого пользователя будет электронная почта, они также могут отказать вам в предоставлении разрешений на электронную почту.   -  person Ming Li    schedule 28.07.2015


Ответы (1)


Я получил ответ. После успешного входа в facebook нам нужно создать GraphRequest с accesstoken, которое мы получаем, в соответствии с retrieveemail. Вот код,

GraphRequest request = GraphRequest.newMeRequest(accessToken,
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object,GraphResponse response) {
    if (response != null) {
        try {
            String mFbid = object.getString("id");
            String mFullname = object.getString("name");
            String email = object.getString("email");
        } catch (JSONException e) {}
    }
}
});
            Bundle parameters = new Bundle();
            parameters.putString("fields", "id,name,email");
            request.setParameters(parameters);
            request.executeAndWait();
person snehal_penurkar    schedule 19.08.2015
comment
На самом деле, это не всегда работает, как я выяснил. По какой-то причине одна из моих учетных записей FB вылетает с ошибкой «Нет значения для электронной почты», а другие возвращают адрес электронной почты, как и ожидалось. Ошибка — это вновь созданная учетная запись. Я до сих пор не знаю, почему это происходит. - person FractalBob; 22.05.2017
comment
Столкнулся с такой же проблемой на одном из аккаунтов. Вы нашли проблему? - person Gaurav; 09.07.2017
comment
Проверьте, есть ли у этой учетной записи идентификатор электронной почты и есть ли разрешение делиться своими данными. Или дайте мне знать, что вы можете найти там какие-либо журналы ошибок. - person snehal_penurkar; 10.07.2017
comment
Да, иногда API не отвечает по электронной почте, потому что пользователь использует свою учетную запись Facebook с номером телефона, и у него/нее нет электронной почты, связанной с учетной записью Facebook. - person Muhammad Maqsood; 22.09.2017
comment
Это происходит, когда пользователь не прикрепил электронное письмо к этой учетной записи. он может использовать номер телефона для входа в систему, что означает, что ему не требуется электронная почта для входа - person RAINA; 23.12.2019
comment
Это происходит потому, что пользователь использует мобильный телефон для входа в систему и еще не прикрепил адрес электронной почты. - person Daniel Nyamasyo; 11.01.2020