response-native fbsdk возвращает сообщение электронной почты неопределенным, несмотря на все предоставленные разрешения - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь получить информацию через Facebook SDK, но до сих пор я получаю только идентификатор и имя пользователя.Я предоставил разрешение, но электронная почта все равно выдается, как имя и идентификатор.Я почти все перепробовал.

Буду признателен за любую помощь.

Заранее спасибо

      import React, { Component } from 'react'
       import { View, TouchableOpacity, Text } from 'react-native';
         import { LoginButton, AccessToken, LoginManager, GraphRequest, 
           GraphRequestManager } from 'react-native-fbsdk';

              export default class App extends Component {
               constructor() {
              super();
                this._fbAuth = this._fbAuth.bind(this);
                          }
                      _fbAuth = () => {
               var that = this;
             LoginManager.logInWithReadPermissions(['public_profile', 
             'email']).then(function (result) {
                if (result.isCancelled) {
           console.log("Login Cancel");
           alert("Login Cancel")
              //debugger
            }
             else {
               console.log("Login AccessToken");
               alert("Login AccessToken");
              AccessToken.getCurrentAccessToken().then(
                       (data) => {
        //      alert("Get AccessToken");
        //debugger
              let accessToken = data.accessToken;
             alert(accessToken.toString());
               const responseInfoCallback = (error, result) => {
            setTimeout(() => {
            if (error) {
              alert('Errorrrrrrrrr');

            }
            else {
              if (result.email == undefined) {
                alert("Error ,Email address is required");
                // stuck at email. result.name and result.id gives correct results

              }
              else {
                alert(result.email);
              }
            }
          }, 200
          );
        }
        const infoRequest = new GraphRequest(
          '/me',
          {
            accessToken: accessToken,
            prameters: {
              fields: {
                string: 'email , name,first_name, middle_name, last_name'
              }
            }
          },
          responseInfoCallback
        );
        new GraphRequestManager().addRequest(infoRequest).start();

               })
                  }
                  },
           function (error) {
            console.log("some error occured!!", error);
          })

            }

           render() {
         return (
             <View>
             <TouchableOpacity onPress={() => this._fbAuth()}>
               <Text>  Press me</Text>
           </TouchableOpacity>
            </View>
        );
             }

                   }

result.email не должен быть неопределенным.

1 Ответ

0 голосов
/ 30 января 2019

Вы можете просто использовать accessToken, предоставленный fbsdk.Просто получите accessToken, как только вы получите accessToken, вы можете сделать запрос к API api для получения данных, связанных с этим пользователем, используя accessToken.

https://developers.facebook.com/docs/graph-api/using-graph-api

Вот полная документация, а также включает accessToken.Это поможет вам.Я тоже так делаю.

...