2017-09-05 18 views
0

我正在获取登录成功和accessToken。我做了没有从fbsdk获得电子邮件ID,原因是反应

我试图

LoginManager.logInWithReadPermissions([ 
     'email', 
     'public_profile', 
     'user_likes', 
    ]) 

那么这

LoginManager.logInWithPublishPermissions([ 
    'publish_actions', 
]).then((result) => { 
    if (result.isCancelled) { 
    console.log('Login cancelled'); 
    } else { 
    AccessToken.getCurrentAccessToken().then((data) => { 
     const accessToken = data.accessToken; 
     const responseInfoCallback = (error, result) => { 
     if (error) { 
      console.log(error); 
      console.log('Error fetching data=', error.toString()); 
     } else { 
      console.log('Success fetching data=', result.toString()); 
     } 
     }; 
     const infoRequest = new GraphRequest(
     '/me', 
     { 
      accessToken, 
      parameters: { 
      fields: { 
       string: 'email,name,first_name,middle_name,last_name', 
      }, 
      }, 
     }, 
     responseInfoCallback, 
    ); 
     new GraphRequestManager().addRequest(infoRequest).start(); 
    }); 
    } 
}); 

'登录的权限成功', '电子邮件,public_profile' 和用户配置文件数据是

{ first_name: 'XXXXXX', 
    name: 'XXXXXX YYYYY', 
    last_name: 'YYYYYY', 
    id: '1319989423636921696328130092' } 

但没有得到用户的电子邮件ID,这里有什么问题。 如何在应用程序中登录Facebook后获取电子邮件ID。

+0

而正是你要求访问他们的电子邮件所必需的权限的用户? – CBroe

+0

你能够获得名称和其他细节? –

回答

1

这是我正在做它在我的项目中,并成功检索电子邮件

LoginManager.logInWithReadPermissions(['public_profile', 'email', 'user_friends']).then(
      (result) => { 
       if (result.isCancelled) { 
        console.log('Login cancelled') 
       } else { 
        AccessToken.getCurrentAccessToken().then(
         (data) => { 
          this._fbHome();// Navigatin to next screen 
         } 
        ) 
       } 
      }, 
      (error) => { 
       console.log('Login fail with error: ' + error) 
      } 
     ) 

然后导航到下一个屏幕后,我提取用户数据

const infoRequest = new GraphRequest(
     '/me?fields=name,email,picture.type(large)', 
     null, 
     this._responseInfoCallback 
    ); 
     new GraphRequestManager().addRequest(infoRequest).start(); 


_responseInfoCallback = (error, result) => { 
    if (error) { 
     alert('Error fetching data: ' + error.toString()); 
    } else { 
     this.setState({ userName: result.name, userEmail: result.email ,userPic:result.picture.data.url}); 
       AsyncStorage.setItem("UserName",this.state.userName); 
        AsyncStorage.setItem("Email", this.state.userEmail); 
        AsyncStorage.setItem("UserPic", this.state.userPic); 

     // SharedPreferences.setItem("UserName", this.state.userName); 
     //  SharedPreferences.setItem("Email", this.state.userEmail); 
     //  SharedPreferences.setItem("UserPic", this.state.userPic); 
     console.log("Picture"+ this.state.userPic + "Name" + this.state.userName + "Email" + this.state.userEmail); 
    } 
    } 
+0

{ID: “1319989428136686664730092”,图片:对象,名称: “DDDDDDDD”} ID : “1319989428136686664730092 “ 名称:” DDDDDDD “ 图片:对象 数据:对象 is_silhouette :falseurl : ”?https://scontent.xx.fbcdn.ne – Sport

+0

你试试我的方法 –

+0

是你的方法只有 – Sport

1

修订 你设置权限时,用户在您的权限验证,例如验证码

LoginManager.logInWithReadPermissions(['public_profile', 'email']) 
     .then(function (result) { 
      if (!result.isCancelled) { 
       return AccessToken.getCurrentAccessToken().then((data) => { 
        return initUser(data).then((user) => { 
         return { 
          name: user.name, 
          email: user.email, 
          photo: 'https://graph.facebook.com/' + user.id + '/picture?type=normal' 
         } 
        }) 
       }) 
      } 
     }).then((data) => { 
      this._navigateTo(this.props, data, 'Home') 
     }) 

集电子邮件代码可以看到这样

LoginManager.logInWithPublishPermissions(['public_profile', 'email']).then((result) => { 
    if (result.isCancelled) { 
    console.log('Login cancelled'); 
    } else { 
    AccessToken.getCurrentAccessToken().then((data) => { 
     const accessToken = data.accessToken; 
     const responseInfoCallback = (error, result) => { 
     if (error) { 
      console.log(error); 
      console.log('Error fetching data=', error.toString()); 
     } else { 
      console.log('Success fetching data=', result.toString()); 
     } 
     }; 
     const infoRequest = new GraphRequest(
     '/me', 
     { 
      accessToken, 
      parameters: { 
      fields: { 
       string: 'email,name,first_name,middle_name,last_name', 
      }, 
      }, 
     }, 
     responseInfoCallback, 
    ); 
     new GraphRequestManager().addRequest(infoRequest).start(); 
    }); 
    } 
}); 
+0

不是我已经试过 – Sport

+0

看到更新,它可以工作 –

+0

什么是initUser这里是什么 – Sport

相关问题