我正在使用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
});
};
答案 0 :(得分:0)
您无法从Twitter API获取用户电子邮件。它不可用。
编辑:对不起,现在似乎有可能。点击此处 - https://dev.twitter.com/rest/reference/get/account/verify_credentials - 但您需要发送电子邮件至Twitter。
申请用户的电子邮件地址需要您的申请 Twitter列入白名单。要请求访问权限,请使用此表单。
列入白名单后,“请求用户发送电子邮件地址”复选框 将在apps.twitter.com上以您的应用权限提供。 隐私政策URL和服务条款URL字段也将是 在电子邮件访问所需的设置下可用。如果 启用后,将通过oauth / authorize对话框通知用户 您的应用可以访问他们的电子邮件地址。
答案 1 :(得分:0)
遗憾的是,没有办法将电子邮件范围从客户端强制执行到Twitter API等OAuth1提供程序。可编程示波器的概念来自OAuth2。
HelloJS文档已知每个服务支持哪些可编程范围。请参阅https://adodson.com/hello.js/#scope的表格。这不是一个全面的列表,因此查阅提供者文档也很有成效。
答案 2 :(得分:0)
我更改了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);
}