Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Araikovich
10 / 9 / 1
Регистрация: 09.08.2017
Сообщений: 62
1

FaceBook LogIn не возвращает Email

05.04.2018, 18:01. Просмотров 210. Ответов 15
Метки нет (Все метки)

Всем привет!
Учусь работать с LogIn в различных сервисах, и с FaceBook возникла такая проблема, все работает, возвращает имя и ID, но не возвращает E-mail, что не так?
Вот код:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
class HomeActivity : AppCompatActivity() {
 
    private lateinit var googleBtn:Button
    private lateinit var faceBookBtn: Button
    private var loginManeger: CallbackManager?=null
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_home)
        googleBtn = findViewById(R.id.google_btn)
        googleBtn.setOnClickListener{googleOAth()}
        loginManeger = CallbackManager.Factory.create()
        faceBookInitialize()
        faceBookBtn = findViewById(R.id.log_in_btn)
        faceBookBtn.setOnClickListener(){LoginManager.getInstance().logInWithReadPermissions(this@HomeActivity, Arrays.asList("user_photos", "public_profile", "email"))}
    }
 
    private fun faceBookInitialize() {
        LoginManager.getInstance().registerCallback(loginManeger!!, object : FacebookCallback<LoginResult> {
            override fun onSuccess(result: LoginResult?) {
                println("=========================onsuccess")
                val accessToken = AccessToken.getCurrentAccessToken()
                val request = GraphRequest.newMeRequest(accessToken) { `object`, response ->
                    println("===================JSON++" + `object`)
 
                    var SfacebookID = " "
                    var Sname = ""
                    var Semail = ""
                    var Sgender = ""
                    var Surl = ""
                    val Sphone = ""
 
                    try {
 
                        if (`object`.has("id")) {
                            SfacebookID = `object`.getString("id")
                            Log.d("MyLogs", SfacebookID)
                        }else
                            Log.d("MyLogs", "failIed")
 
                        if (`object`.has("name")) {
                            Sname = `object`.getString("name")
                            Log.d("MyLogs", Sname)
                        }else
                            Log.d("MyLogs", "name")
 
                        if (`object`.has("email")) {
                            Semail = `object`.getString("email")
                            Log.d("MyLogs", Semail)
                        }else
                            Log.d("MyLogs", "failMail")
 
                        if (`object`.has("gender")) {
                            Sgender = `object`.getString("gender")
                        }
 
                        if (`object`.has("picture")) {
                            Surl = `object`.getJSONObject("picture").getJSONObject("data").getString("url")
                        }
 
 
                    } catch (e: Exception) {
                        e.printStackTrace()
                        Log.d("MyLogs", e.message)
                    }
                }
                request.executeAsync()
            }
 
            override fun onCancel() {
                println("=========================onCancel")
                Toast.makeText(this@HomeActivity, "Cancel", Toast.LENGTH_LONG).show()
            }
 
            override fun onError(error: FacebookException?) {
                println("=========================onError" + error.toString())
                Toast.makeText(this@HomeActivity, "onError", Toast.LENGTH_LONG).show()
            }
        })
    }
 
    private fun googleOAth() {
        val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestEmail()
                .requestId()
                .build()
        val GoogleSignInClient = GoogleSignIn.getClient(this, gso)
        val intent = GoogleSignInClient.signInIntent
        startActivityForResult(intent, 3)
    }
 
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if(requestCode == 3){
            var task :Task<GoogleSignInAccount> = GoogleSignIn.getSignedInAccountFromIntent(data)
            handleSingInResult(task)
        }
        loginManeger!!.onActivityResult(requestCode, resultCode, data)
    }
 
    private fun handleSingInResult(task: Task<GoogleSignInAccount>) {
            val account = task.getResult(ApiException::class.java)
            Log.d("MyLogs", account.email)
    }
}
Вот лог:

04-05 14:41:25.112 2977-2977/araikovichinc.eden I/System.out: =========================onsuccess
04-05 14:41:25.327 2977-2977/araikovichinc.eden I/System.out: ===================JSON++{"name":"Tigran Chilingarian","id":"965145626974975"}
04-05 14:41:25.327 2977-2977/araikovichinc.eden D/MyLogs: 965145626974975
04-05 14:41:25.327 2977-2977/araikovichinc.eden D/MyLogs: Tigran Chilingarian
04-05 14:41:25.327 2977-2977/araikovichinc.eden D/MyLogs: failMail
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.04.2018, 18:01
Ответы с готовыми решениями:

Login with Facebook
Хотел бы посоветоваться с людьми которые используют эту примочку. Я...

How to add facebook login
hi, How to add facebook login to my site . i use asp.net . thanks advance .

Facebook login on iOS device
Всем привет! Хотелось бы получить небольшую консультатицию по FB логину в...

Вывод данных пользователя из ТЕКУЩЕЙ СЕССИИ кроме email, login НЕ выводится остальное почему?
Братья по разуму! Приветствую вас!!! Я новенький тут. Дело вот в чем. Не...

что делает команда $user = SELECT * FROM `users` WHERE `Login` = '$_POST[login]'?
Эта команда помещает в переменную user всю строчку из таблицы? Например у меня...

15
+1
Нарушитель
321 / 154 / 53
Регистрация: 24.08.2010
Сообщений: 1,028
05.04.2018, 20:05 2
Видимо, поле "email" называется по-другому
0
Araikovich
10 / 9 / 1
Регистрация: 09.08.2017
Сообщений: 62
05.04.2018, 20:31  [ТС] 3
+1, нет, тут все верно, я специально в лог вывожу весь JSON, чтоб посмотреть, и там только name и id
0
+1
Нарушитель
321 / 154 / 53
Регистрация: 24.08.2010
Сообщений: 1,028
05.04.2018, 21:15 4
Тогда тебе прямая дорога в техподдержку фейсбука
0
edward_freedom
1555 / 1434 / 303
Регистрация: 01.10.2011
Сообщений: 2,636
06.04.2018, 07:35 5
Цитата Сообщение от Araikovich Посмотреть сообщение
`object`.getString("id")
Чет я не пойму че это за язык? И где точки с запятыми в конце строк
0
ExFau$t
581 / 521 / 120
Регистрация: 08.05.2012
Сообщений: 2,606
06.04.2018, 09:04 6
edward_freedom, ну привет, https://ru.wikipedia.org/wiki/Kotlin.
Надо интересоваться, что в мире происходит.
0
edward_freedom
1555 / 1434 / 303
Регистрация: 01.10.2011
Сообщений: 2,636
06.04.2018, 09:12 7
ExFau$t, Зачем писать на непонятно чем, когда есть java?
0
+1
Нарушитель
321 / 154 / 53
Регистрация: 24.08.2010
Сообщений: 1,028
06.04.2018, 09:26 8
edward_freedom, а я почитал вики )
Авторы ставили целью создать язык более лаконичный и типобезопасный, чем Java, и более простой, чем Scala[3]. Следствием упрощения по сравнению со Scala стали также более быстрая компиляция и лучшая поддержка языка в IDE[4]. Позиционируется разработчиками как объектно-ориентированный язык промышленного[уточнить] уровня, а также как язык, который сможет заменить Java
0
ExFau$t
581 / 521 / 120
Регистрация: 08.05.2012
Сообщений: 2,606
06.04.2018, 10:03 9
edward_freedom, непонятно что, это твоё отношение к жизни. Технологии развиваются, низкоуровневое программирование уходит. Кто хочет может продолжать и на делфи сидеть, вот только на рынке этот специалист не найдёт нормальную работу.
0
edward_freedom
1555 / 1434 / 303
Регистрация: 01.10.2011
Сообщений: 2,636
06.04.2018, 11:15 10
ExFau$t, чет я посмотрел вакансии на котлин,никому они нафиг не надо, везде надо джава. Шах и мат

Добавлено через 45 секунд
+1, судя по коду, не получилось
0
ExFau$t
581 / 521 / 120
Регистрация: 08.05.2012
Сообщений: 2,606
06.04.2018, 14:10 11
edward_freedom, в какой деревне ты смотрел? На хантере каждая вторая вакансия с котлином, и даже если не написано, на собеседовании 90%, что спросят. Глупо спорить, если ты только сейчас узнал о существовании этого языка.

Добавлено через 1 минуту
И да, я не имел в виду, что джава это старьё и т.п.
0
Araikovich
10 / 9 / 1
Регистрация: 09.08.2017
Сообщений: 62
06.04.2018, 14:52  [ТС] 12
+1, ExFau$t, edward_freedom, 1) Kotlin нужен везде, это как джава, только намного круче и быстрее. Просто нужно смериться с тем, что мир меняется....
2) Пока были споры, я нашел решение проблемы, как оказалось, facebook нужно явно сказать, какие данные прислать в JSON, и делается это так:

Java
1
2
3
4
val parameters = Bundle()
                parameters.putString("fields", "id,name,link,email,picture,gender, birthday")
                request.parameters = parameters
                request.executeAsync()
0
ExFau$t
581 / 521 / 120
Регистрация: 08.05.2012
Сообщений: 2,606
06.04.2018, 14:56 13
Araikovich, котлин это, конечно, хорошо, но ты лучше потрать время на изучение чистой архитектуры и rx, куда больший выхлоп даёт, чем котлин.
0
edward_freedom
1555 / 1434 / 303
Регистрация: 01.10.2011
Сообщений: 2,636
06.04.2018, 15:01 14
Araikovich, это такая же ситуация как с c++ и c#. Когда надо сделать что то маленькое и простое и быстро выбирают c#. А когда надо надежное то конечно c++
0
+1
Нарушитель
321 / 154 / 53
Регистрация: 24.08.2010
Сообщений: 1,028
06.04.2018, 16:43 15
Цитата Сообщение от Araikovich Посмотреть сообщение
+1, ExFau$t, edward_freedom, 1) Kotlin нужен везде, это как джава, только намного круче и быстрее. Просто нужно смериться с тем, что мир меняется....
А чо я-то сразу? Ничего против котлина не имею.
Только я не понял, с кем нужно мериться?
0
Araikovich
10 / 9 / 1
Регистрация: 09.08.2017
Сообщений: 62
08.04.2018, 02:01  [ТС] 16
ExFau$t, та вот уже потратил, код который я выложил быть исключительно тестом работы с facebook, поэтому лепить MVP, DI, Repository и т.д. вообще не было смысла.
0
08.04.2018, 02:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.04.2018, 02:01

API Facebook, отправляем сообщение на страницу Facebook из PHP
Всем привет! При отправке сообщения почему-то НЕ происходит автоматический...

Шаринг в соцсетях. Facebook (share42) или дебаггер facebook
Кто сталкивался с данным плагином помогите или расскажите про дебаггер...

FaceBook API, спарсить новости из группы FaceBook
Добрый день, подскажите пожалуйста как спарсить новости из группы FaceBook...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru