当前位置: 首页 > 知识库问答 >
问题:

如何使用OAuth或OAuth2身份验证通过IMAP访问Yahoo Mail

苏高峰
2023-03-14

根据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] IMAP4rev1 imapgate-1.8.1_01.20166 imap1009.mail.ne1.yahoo.com

Yahoo Mail可以通过IMAP使用OAuth(2)身份验证访问。

我在https://developer.yahoo.com/apps/上注册了我的应用程序,所以我得到了客户端ID和客户端机密。我没有找到任何与邮件相关的作用域(API权限)。然而,我选择了所有API权限,这是在我注册我的应用程序时提出的。

我尝试实现OAuth和OAuth2。

OAuth2:我无法获得作用域“mail-r”的授权代码。当我生成URL(https://api.login.yahoo.com/oauth2/request_auth?client_id=client_id&redirect_uri=oob&scope=mail-r&response_type=code)并在浏览器中打开它时,会出现文本为“Developers:请从已注册的作用域请求作用域并再次提交”的页面。显示。它适用于其他范围。例如,我可以获得“sdct-r”的授权代码

OAuth:我可以得到一个访问令牌。但是当我用AUTHENTICATE XOAUTH2命令发送它时,我得到“no[AUTHENTICATIONFAILED](#auth007)Bad scope”响应。

所以问题是,应该设置什么范围来使用IMAP和OAuth(2)访问Yahoo Mail?

共有1个答案

公孙棋
2023-03-14

2017年2月27日更新:这个解决方案将不再起作用,因为不幸的是,雅虎已经删除了下面引用的cck-form.html页面,并且似乎不允许新应用程序请求与邮件相关的API访问。希望这种情况会有所改变。

以下是如何在雅虎上创建一个完全访问电子邮件的应用程序。(最近雅虎从他们的UI中删除了这个选项)一旦适当的权限到位,获得oauth令牌和访问邮箱应该是直接的,我不在这里讨论。

>

  • 访问https://developer.yahoo.com/oauth/guide/cck-form.html,查找“Here is a example form以及您可以在表单中使用的示例值”,并将示例html复制到本地文件中并保存。下面是html的副本。

    在浏览器上打开文件。填写适当的信息(为完全邮件访问设置scope=ymrf),并单击“使用调试弹出窗口”。

    在弹出窗口中单击允许。如果您还没有在浏览器上登录雅虎,则需要登录。

    转到https://developer.yahoo.com/apps/,您应该会看到具有适当权限的应用程序。

    <html>  
    <head>  
        <title>CCK Example</title>  
    </head>  
    <body>  
      
    <form target="yCredWindow" action="http://developer.apps.yahoo.com/projects/createconsumerkey" method="post" id="extAuthForm" name="extAuthForm">  
      
    <h2>Inputs</h2>  
    <p>* = Required</p>    
    <table>  
        <tr><th>Field</th>  
            <th>Input</th></tr>  
      
        <tr><td>* Application Name: </td>  
            <td><input name="name" id="name" value="Janrain Engage"></td></tr>  
      
        <tr><td>Description: </td>  
            <td><input name="description" id="desc"></td></tr>  
      
        <tr><td>appid: </td>  
            <td><input name="appid" id="appid"></td></tr>  
      
        <tr><td>Return to: </td>  
            <td><input name="return_to" id="return_to"></td></tr>  
      
        <tr><td>* Third Party Name: </td>  
            <td><input name="third_party" id="third_party" value="Janrain"></td></tr>  
      
        <tr><td>* Scopes: </td>  
            <td><input name="scopes" id="scope" value="ysrw"></td></tr>  
      
        <tr><td>Favicon URL: </td>  
            <td><input name="favicon" id="favicon"></td></tr>  
      
        <tr><td>Application URL: </td>  
            <td><input name="application_url" id="application_url"></td></tr>  
      
        <tr><td>* Domain: </td>  
            <td><input name="domain" id="domain" value="www.janrain.com"></td></tr></table>  
      
    <input type="hidden" name="debug" id="debug" value="true">  
      
    <button type="reset">clear all fields</button>  
    <button type="button" id="submitWithDebug">pop window with debug</button>  
    </form>  
      
    <h6>Note: A URL that starts with http:// is required for: Return to, Favicon URL and Application URL.  However, you will get an error if you include http:// for the Domain.</h6>  
      
    <h2>Returns</h2>  
    <table>  
        <tr><td>Key returned:</td>  
            <td><input type="text" id="cKeyInputField"></td></tr>  
      
        <tr><td>Secret returned:</td>  
            <td><input type="text" id="cSecretInputField"></td></tr>  
      
        <tr><td>Appid returned:</td>  
            <td><input type="text" id="returnAppid"></td></tr></table>  
      
    <script src="http://yui.yahooapis.com/3.0.0/build/yui/yui-min.js"></script>  
    <script>  
      
    var formTarget = null;  
      
    // used by return_to.html to set the fields with the data that comes back  
    var setFields = function(id, val)  { document.getElementById(id).value = val; };  
      
    // pops the window, then submits to it  
    var popWindowOnSubmit = function(e)  {  
        window.open('', formTarget, 'status=0,toolbar=0,location=0,menubar=0,width=545,height=650');  
        document.extAuthForm.submit();  
    };  
      
    // handle submit when the button is clicked  
    YUI().use('node', function(Y) {  
        formObject = Y.one('#extAuthForm');  
        formTarget = formObject.getAttribute('target');  
        Y.on('click', popWindowOnSubmit, '#submitWithDebug');  
    });  
      
    </script>  
      
    </body>  
    </html> 

  •  类似资料:
    • 我在我的程序中使用IMAP客户端。我试图通过使用OAuth2机制(使用这些说明)IMAP客户端访问Office 365 Outlook。 当我在IMAP客户端中进行身份验证时,身份验证失败,但Google和Outlook.com的OAuth2身份验证工作正常。Office 365在IMAP中是否支持OAuth2身份验证?如果支持,如何进行身份验证?

    • 尝试将ember应用程序连接到oauth2身份验证服务时,获得一个[error=“unauthorized”,error_description=“访问此资源需要完全身份验证”]。如有任何建议,我们将不胜感激。我花了几天时间想解决这个问题,但没有效果。 下面是app.js中的代码

    • 我正在使用预装的Visual Studio解决方案开发我的首批OAuth解决方案之一。 不过,同时我也希望我的服务器应用程序拥有“完全访问权限”。他们需要能够获得列表增加多个用户,删除东西等等。 下面是我的问题,我认为这些问题可以很容易地一起回答: 如何管理两个短期令牌(承载令牌?)连同永久令牌(API令牌?) 我在访问级别上有何不同,因此某些方法需要永久令牌? 在同一方法中,我在访问级别上有何不

    • 我在令牌使用者上得到以下错误。任何帮助解决这将是非常感谢的。多谢了。 “IDX10503:签名验证失败。 公共无效配置(IApplicationBuilder应用程序)

    • 在我配置了下面的配置之后,它不会连接到Active Directory。我无法使用Active Directory的帐户登录。会有什么问题? 我有一个Ubuntu服务器18.04,带有ApacheGuacamoleV1。0.0. 安装。我想使用LDAP身份验证来验证用户。我已经下载了鳄梨酱-auth-ldap-1.0.0。jar和jldap-4.3。jar扩展。 10.10.10.21,10.10

    • 我一直在尝试用Zuul、Eureka和Spring boot构建一个应用程序,最近我决定尝试登录。作为提醒,我已经配置了身份验证服务(使用OAuth2.0),并且可以使用curl成功地进行身份验证。我还可以向其他拥有受保护资源的微服务发出get请求(同样,只能使用CURL,因为我可以在身份验证头中注入令牌)。我关心的是,我想以Zuul为门户来做这件事。[![在此处输入图像说明][1]][1] 当我