菜鸟教程小白 发表于 2022-12-12 18:05:56

ios - 具有 Dropbox oauth2 授权的 iOS 应用程序的自定义 URL 方案?


                                            <p><p>我正在尝试将 Dropbox 与基于 Qt 的 iOS 应用程序一起使用。我的问题是从保管箱授权网页重定向回应用程序。
我没有设法让 Dropbox 授权与 Qt WebView 一起工作,所以我只是将默认浏览器启动到 Dropbox 授权站点。 </p>

<p>根据 dropbox 开发门户,对于 redirect_uri 参数,外部地址只能使用 https 方案,本地地址只能使用 http 方案。</p>

<p>这是否使重定向无法使用我为我的应用配置的 URL 方案,例如:'myapp://'?</p>

<p>我应该如何让 Dropbox 重定向回我的应用?我应该使用使用 URL 方案重定向到我的应用程序的自定义网站,还是应该让我的应用程序作为监听 localhost 上的某个端口的服务器,以便我使用' <a href="http://localhost:'?建议?这些甚至可能吗?</p>

<p>能否以某种方式将 URL 方案与“<a href="http://localhost" rel="noreferrer noopener nofollow">http://localhost</a>”结合使用? ' 基于 URL?</p>

<p>当然可以省略redirect_uri,让用户复制授权码或token,切换回我的应用,粘贴到文本字段,但我觉得这样会有点麻烦用户。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>这里需要注意的重要一点是 Dropbox API OAuth 2 实现提供了两种不同的流程,“代码”和“ token ”。代码流确实需要 https://,除非它是 localhost URL,在这种情况下它允许 http://或 https://(仅)。</p>

<p>不过,您可以在 token 流中使用其他协议(protocol)。以下是列出的变体,以及每个变体的结果/错误。</p>

<p><strong>使用 <code>redirect_uri</code>:</strong></p>

<p><em>代码流程:</em></p>

<ul>
<li><p> <a href="https://www.dropbox.com/1/oauth2/authorize?client_id=APP_KEY&amp;response_type=code&amp;redirect_uri=myapp://dropbox_callback" rel="noreferrer noopener nofollow">https://www.dropbox.com/1/oauth2/authorize?client_id=APP_KEY&amp;response_type=code&amp;redirect_uri=myapp://dropbox_callback</a> </p>

<ul>
<li>“无效的 redirect_uri:“myapp://dropbox_callback”:当 response_type=code 时,redirect_uri 必须以“https://”开头,除非它是 localhost URI。”</li>
</ul></li>
<li><p> <a href="https://www.dropbox.com/1/oauth2/authorize?client_id=APP_KEY&amp;response_type=code&amp;redirect_uri=myapp://localhost/dropbox_callback" rel="noreferrer noopener nofollow">https://www.dropbox.com/1/oauth2/authorize?client_id=APP_KEY&amp;response_type=code&amp;redirect_uri=myapp://localhost/dropbox_callback</a> </p>

<ul>
<li>“无效的 redirect_uri:“myapp://localhost/dropbox_callback”:当 response_type=code 时,localhost URI 只能以“http://”或“https://”开头。”</li>
</ul></li>
</ul>

<p><em> token 流:</em></p>

<ul>
<li><p> <a href="https://www.dropbox.com/1/oauth2/authorize?client_id=APP_KEY&amp;response_type=token&amp;redirect_uri=myapp://dropbox_callback" rel="noreferrer noopener nofollow">https://www.dropbox.com/1/oauth2/authorize?client_id=APP_KEY&amp;response_type=token&amp;redirect_uri=myapp://dropbox_callback</a> </p>

<ul>
<li>200(这可能是最适合您使用的版本)</li>
</ul></li>
</ul>

<p><strong>没有 <code>redirect_uri</code>:</strong></p>

<p><em>代码流程:</em></p>

<ul>
<li><p> <a href="https://www.dropbox.com/1/oauth2/authorize?client_id=APP_KEY&amp;response_type=code" rel="noreferrer noopener nofollow">https://www.dropbox.com/1/oauth2/authorize?client_id=APP_KEY&amp;response_type=code</a> </p>

<ul>
<li>200</li>
</ul></li>
</ul>

<p><em> token 流:</em></p>

<ul>
<li><p> <a href="https://www.dropbox.com/1/oauth2/authorize?client_id=APP_KEY&amp;response_type=token" rel="noreferrer noopener nofollow">https://www.dropbox.com/1/oauth2/authorize?client_id=APP_KEY&amp;response_type=token</a> </p>

<ul>
<li>“缺少redirect_uri(当“response_type”为“token”时需要)”</li>
</ul></li>
</ul></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 具有 Dropbox oauth2 授权的 iOS 应用程序的自定义 URL 方案?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/34719720/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/34719720/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 具有 Dropbox oauth2 授权的 iOS 应用程序的自定义 URL 方案?