IMAP如何使用OAuth或OAuth2身份验证访问Yahoo Mail
根据developer.yahoo.com/mail/和IMAP回复:IMAP如何使用OAuth或OAuth2身份验证访问Yahoo Mail,oauth,oauth-2.0,imap,yahoo-mail,yahoo-oauth,Oauth,Oauth 2.0,Imap,Yahoo Mail,Yahoo Oauth,根据developer.yahoo.com/mail/和IMAP回复: * OK [CAPABILITY IMAP4rev1 ID MOVE NAMESPACE X-ID-ACLID UIDPLUS LITERAL+ CHILDREN XAPPLEPUSHSERVICE XYMHIGHESTMODSEQ AUTH=PLAIN AUTH=LOGIN AUTH=XOAUTH2 AUTH=XYMCOOKIE AUTH=XYMECOOKIE AUTH=XYMCOOKIEB64 AUTH=XYMPKI]
* OK [CAPABILITY IMAP4rev1 ID MOVE NAMESPACE X-ID-ACLID UIDPLUS LITERAL+ CHILDREN XAPPLEPUSHSERVICE XYMHIGHESTMODSEQ AUTH=PLAIN AUTH=LOGIN AUTH=XOAUTH2 AUTH=XYMCOOKIE AUTH=XYMECOOKIE AUTH=XYMCOOKIEB64 AUTH=XYMPKI] IMAP4rev1 imapgate-1.8.1_01.20166 imap1009.mail.ne1.yahoo.com
使用OAuth(2)身份验证,IMAP可以访问雅虎邮件
我在上注册了我的应用程序,因此我获得了客户ID和客户机密。我没有找到任何与邮件相关的作用域(API权限)。尽管如此,我还是选择了注册应用程序时显示的所有API权限
我尝试实现OAuth和OAuth2
OAuth2:
我无法获取作用域“mail-r”的授权代码。当我生成URL()并在浏览器中打开它时,将显示文本为“开发者:请从已注册的作用域请求作用域并再次提交”的页面。它适用于其他范围。例如,我可以获得“sdct-r”的授权码
OAuth:
我可以得到一个访问令牌。但是当我使用AUTHENTICATE XOAUTH2命令发送它时,我得到了“NO[AUTHENTICATIONFAILED](#AUTH007)Bad scope”响应
因此,问题是应该设置什么范围来使用IMAP和OAuth(2)访问Yahoo Mail?在上创建/配置应用程序时,必须添加“邮件只读”范围
不幸的是,当我在新创建的应用程序上尝试这样做时,该选项不可用
您可能需要与Yahoo联系,让他们允许您请求这些范围。2017年2月27日更新:由于Yahoo不幸删除了下面引用的cck-form.html页面,并且似乎不允许新应用请求与邮件相关的API访问,因此此解决方案将不再有效。希望这种情况有所改变 下面是你如何在雅虎上创建一个可以完全访问电子邮件的应用程序。(最近yahoo从他们的UI中删除了这个选项)一旦有了适当的权限,获取oauth令牌和访问邮箱应该是直截了当的,我在这里不做介绍
CCK示例
投入
*=必需的
领域
输入
*应用程序名称:
说明:
appid:
返回:
*第三方名称:
*范围:
Favicon网址:
应用程序URL:
*域:
清除所有字段
带调试的弹出窗口
注意:返回到、Favicon URL和应用程序URL需要以http://开头的URL。但是,如果在域中包含http://则会出现错误。
退换商品
返回的密钥:
返回的秘密:
返回的Appid:
var formTarget=null;
//return_to.html用于设置包含返回数据的字段
var setFields=function(id,val){document.getElementById(id).value=val;};
//弹出窗口,然后提交给它
var popWindowOnSubmit=函数(e){
打开(“”,formTarget,'状态=0,工具栏=0,位置=0,菜单栏=0,宽度=545,高度=650');
document.extAuthForm.submit();
};
//单击按钮时处理提交
YUI()。使用('node',函数(Y){
formObject=Y.one(“#extAuthForm”);
formTarget=formObject.getAttribute('target');
Y.on('click',popWindowOnSubmit',#submitWithDebug');
});
在点击授权端点时,必须添加scope=openid,
然后在hittng令牌端点之后获取令牌,
使用获得的访问令牌命中配置文件终结点,
然后我们在profile json object下收到电子邮件我找到了另一种方法来创建启用邮件API权限的应用程序。我注意到,如果在URL中包含“api”参数,则可以指定要包含的作用域,而不管它们是否在底部被选中。我注意到,如果您在URL中提供了'api=mail',它默认包含邮件权限。因此,要创建具有邮件权限的新应用,请使用以下URL:
https://developer.yahoo.com/apps/create/?api=mail
为了让你看到潜在作用域列表中的邮件复选框,雅虎必须将你的开发者帐户列为白名单。我找不到关于此的任何文档,也找不到关于如何申请的说明,因此我无法用任何文档对此进行备份。截至2017年8月,获取电子邮件地址的唯一方法是使用名为配置文件-读/写公共和私人的范围。雅虎做出了一个非常愚蠢的误导性选择,因为我们根本不想“写”任何东西
作为额外的麻烦,这还将返回与帐户相关的所有电子邮件的列表,而不仅仅是主邮件。而且无法准确识别哪个是真实的-列表中返回的primary=true字段不可信。似乎高级邮件帐户可以使用邮件api。。。查看packagetracker网站,在与yahoo注册时,它显示了oauth2过程中的邮件范围。。。我也找不到包含该范围的方法。。。如果你找到了一个包含它的方法,请在这里发布答案,这将是一个很大的帮助…@Aleksey你找到了什么吗?@Aleksey,请将user3377687答案标记为已接受。。。我已经检查过了,它可以工作了。。。如果将作用域设置为ymrf=>FullAccessDone,它肯定会添加邮件完全权限,谢谢。当然,非常感谢,@user3377687。这家伙应该得到一个Cookiet解决方案是可行的,但也是可行的