我有一个iOS应用程序,使用OAuth2在Uber API中进行身份验证UIWebView.升级到iOS 9时,我遇到了ATS阻止登录页面的https请求的问题.然后我为优步登录页面添加了一个例外,但随后注意到登录页面向Facebook,亚马逊网络服务和其他网站发出了几个其他请求,这些请求都被ATS阻止.
我不想维护优步登录页面的例外列表,因为优步可以轻松更改其页面,我的应用程序将没有正确的例外.所以我决定SFSafariViewController试一试.
我能够完成OAuth2进程SFSafariViewController,问题是当身份验证完成时,Uber会存储某种类型的cookie.如果我想验证其他帐户并SFSafariViewController再次启动,则会从之前的身份验证中获取Cookie,并且无法对其他帐户进行身份验证.我UIWebView通过删除cookie来解决这个问题NSHTTPCookieStorage,但我没有看到从中删除cookie的方法SFSafariViewController.
我正在Postman上测试Uber API,我能够成功发送带有表单数据的请求.当我尝试使用Node.js和axios库转换此请求时,我收到错误.
这是我的Postman请求的样子:
我得到的回应是: { "error": "invalid_client" }
这是我在Node.js和axios中所做的事情:
var axios = require("axios");
const config = { headers: { 'Content-Type': 'multipart/form-data' } };
axios.post('https://login.uber.com/oauth/v2/token', {
client_id: '***',
client_secret: '***',
grant_type: 'authorization_code',
redirect_uri: 'http://localhost:8080/',
code: '***'
}, config)
.then(function(response) {
console.log(response.data)
})
.catch(function(error) {
console.log(error)
})
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我得到了400响应.
我添加了'multipart/form-data'标题,因为我在Postman请求中填写了表单数据.没有标题我得到相同的结果.
我期待从Postman得到相同的响应,我的Node.js脚本中的配置变量有问题吗?
任何帮助,将不胜感激!
我在 Uber Developer Dashboard(服务器 Asp.NET 应用程序)上注册了我的应用程序。在仪表板的 Auth 选项卡中,我找到了授权参数:Client ID, Client Secret. 使用OAuth2我通过重定向链接在ASP.Net MVCController 中成功接收到授权代码VS2017。我使用Uber C# SDK(https://github.com/timothyclifford/uber-csharp-sdk)并在本地主机上运行应用程序使用ngrok。当我尝试请求访问令牌时,出现错误。在 Visual Studio 中显示状态
“等待激活”
如果您通过邮递员提出请求,那么我会得到这个答案
在仪表板中,我看到两条消息:
消息 1:
“请联系您的 Uber 业务开发代表以获取服务器令牌访问权限。”
消息 2:
“您的应用程序目前无权访问任何范围。请联系您的优步业务发展代表或优步联系人请求访问权限。”
我可以假设问题与范围有关,但我不明白如何指定此范围。我不需要代表用户发出请求,我想从应用程序帐户发出请求。此外,现在我无法填写“设置”选项卡中的字段重定向 URI 和隐私政策 URL,因为该项目正在开发中
如何设置应用程序帐户以获取令牌?也许我提出了错误的要求?
我正在使用我的帐户的持票人令牌(这是Uber应用程序的管理员)向https://sandbox-api.uber.com/v1/requests请求.
当我提出请求时,我得到401:
{
"message": "Missing scope: request",
"code": "unauthorized"
}
Run Code Online (Sandbox Code Playgroud)
正如我所说,我所拥有的access_token是针对注册为应用管理员的电子邮件地址,所以这个请求应该正常吗?
我可以在https://developer.uber.com找到Uber Rush的API ,但Uber EATS没有,这些信息会在哪里?
我正在我的iOS(Swift)应用程序中实现Uber的Request Endpoint.Request API/Endpoint要求用户使用app进行身份验证,这里是doc.
为此,我正在使用这个Oauth2.0库
我做的是
在给定的安装说明的帮助下,成功地将库集成到我的项目(xCode)中.
在我的AppDelegate中
let uber_OAuth_Settings = [
"client_id": "XXXXXXX9vtKzobvXXXXXX",
"client_secret": "EXXXXXXXXyFUNCa_Wez6AXXXXXXXnrXtxus",
"authorize_uri": "https://login.uber.com/oauth/authorize",
"token_uri": "https://login.uber.com/oauth/token",
"redirect_uris": ["jamesappv2://oauth/callback"], // don't forget to register this scheme
] as OAuth2JSON
Run Code Online (Sandbox Code Playgroud)
var oauth:OAuth2CodeGrant!
在我didFinishLaunchingWithOptions的Appdelegate 方法中
oauth = OAuth2CodeGrant(settings: uber_OAuth_Settings)
oauth.viewTitle = "Uber Login Service" // optional
oauth.verbose = true // For Logs
Run Code Online (Sandbox Code Playgroud)不要忘记注册url scheme ie("redirect_uris": ["jamesappv2://oauth/callback"])
转到您的应用程序的目标 - >信息选项卡 - >网址类型 - >单击(+),附加图像

在AppDelegate中添加下面给出的方法并处理回调URL
func application(application: UIApplication,
openURL url: NSURL,
sourceApplication: …Run Code Online (Sandbox Code Playgroud)我正在尝试使用 Auth 2.0 对 Uber REST API 进行身份验证,但范围似乎存在问题。一旦我指定了一个范围(甚至是非特权范围),/authorize 请求就会失败并显示“无效范围”。如果我排除范围参数,它似乎工作正常。
开发人员仪表板告诉我输入我想要使用的范围,但在 Auth 页面上无法执行此操作。
看起来我应该有办法在这里选择范围,但根本没有输入。(尝试了不同的浏览器,关闭了广告拦截等)。
我也找不到“请求完全访问”按钮,根据 Uber 开发人员门户中的范围指南,它应该是可见的。
我已在“设置”下输入了所有信息,但与我的实现无关的“源 URI”除外。
我错过了什么吗?
Uber服务器令牌不再工作,在仪表板上显示“请与您的Uber BD代表联系以访问服务器令牌。”
我正在关注 Uber Eats API 文档,但遇到了问题。我希望它与我的销售点网络应用程序一起使用。
文档说:
要生成客户端凭据令牌,请从开发人员仪表板检索您的应用程序的 client_id 和 client_secret...
但是当尝试生成客户端凭据时,它显示:
抱歉,无法生成访问令牌,请确保您已检查至少一个允许使用客户端凭据生成访问令牌的范围。
但是开发人员仪表板中没有可供选择的项目。
文档:https : //developer.uber.com/docs/eats/guides/authentication#example-request
我目前正在使用SFSafariViewController来记录uber api中的用户.SFSafariViewController不允许您在注销后手动删除超级cookie.
我已经读过这个问题:如何在注销时从uber API中删除访问令牌?
我的问题是我可以登录并注销第一个用户.我可以使用第二个用户登录,但它会显示上一个用户的名称.
我正确撤销令牌,而不是调用链接https://riders.uber.com/logout.
我想知道是否有办法通过https://riders.uber.com/logout来清除上次登录尝试设置的cookie.如果页面本身可以在加载时清除cookie,或者如果有查询参数,我可以让它清除它.
这将允许我直接使用SFSafariViewController而无需执行自定义WebView/Cookie管理实现.
它是否只是登出uber页面中的错误而不能正确清除auth/sessions cookie?