Twitter 授权使用 Hello.js 个库但无法接收电子邮件

Twitter authorization using Hello.js libraries but unable to receive email

我正在使用 Hello.js 进行 Twitter 登录。我这样做:http://adodson.com/hello.js/demos/twitter.html 但我无法接收电子邮件。我尝试设置范围电子邮件,但它也不起作用。

这是我的代码:

var twitter = hello('twitter');

            twitter.login({ scope: 'email' }).then(function(auth){
                    return twitter.api('me');
                })
                .then( function(profile){
                    console.log(profile); // here I received full user data without email
                });
            };

您无法从 Twitter 获取用户电子邮件 API。不可用。

编辑:抱歉,现在好像可以了。在这里查看 - https://dev.twitter.com/rest/reference/get/account/verify_credentials - 但你需要通过电子邮件发送推特。

Requesting a user’s email address requires your application to be whitelisted by Twitter. To request access, please use this form.

Once whitelisted, the “Request email addresses from users” checkbox will be available under your app permissions on apps.twitter.com. Privacy Policy URL and Terms of Service URL fields will also be available under settings which are required for email access. If enabled, users will be informed via the oauth/authorize dialog that your app can access their email address.

遗憾的是,无法强制从客户端到 OAuth1 提供商(如 Twitter API)的电子邮件范围。可编程范围的概念来自 OAuth2。

HelloJS 记录了已知每个服务支持哪些可编程范围。请参阅 https://adodson.com/hello.js/#scope 中的 table。这不是一个完整的列表,因此也可以参考提供者的文档。

我已经更改了 hello.all.js 文件。将 include_email=true 表达式添加到 verify_credentials.json

---

get: {      me: 'account/verify_credentials.json?include_email=true',

---

所以我可以收到电子邮件

  function login(){
        // Twitter instance
        var twitter = hello('twitter');
        // Login
        twitter.login({ scope: 'email' }).then(function(r){
            // Get Profile
            return twitter.api('me');
        }, function(e) {
             alert('Signin error: ' + e.error.message);
         } )
        .then( function(p){
            // Get email
            alert('email: ' + p.email)
        }, log );       
   }       

   function log(){
       console.log(arguments);
   }