我正在努力通过 Yahoo Id 启用登录到我的移动应用程序。有一个使用 OAuthWebSecurity 并启用通过 facebook、gmail、windows、twitter、yahoo 进行日志记录的工作 Web 应用程序。我的任务是创建具有一些 Web 应用程序功能的移动应用程序。
Web应用程序:
- MVC4
- OAuthWeb安全
- 为移动应用程序创建的 WebApi 控制器,用于验证登录用户,然后从我们的数据库中获取数据
移动应用:
- 离子建立在科尔多瓦
- 对于 OAuth,我使用的是 OAuth nq-cordova 插件(不为雅虎提供者提供逻辑,所以我根据现有方法创建了自己的)
- 用于查询提供者端点的 angular.js $http 服务(如果需要)
我的移动应用程序中设计的(不是由我设计的)身份验证流程是:
移动登录屏幕 -> 选择的提供商登录窗口 -> 身份验证 -> 使用 OAuth access_token 和/或 user_id 重定向回来 -> 查询我们的 WebApi 以验证用户身份 -> 从数据库获取数据
查询雅虎认证端点后: https://api.login.yahoo.com/oauth2/request_auth?client_id= ' + clientId + '&redirect_uri=' + redirectUri' + '&response_type=token
响应是: { access_token: '我的令牌在这里' token_type: bearer, xoauth_yahoo_guid: '我的 guid 在这里' }
在我的 WebApi 用户验证方法中使用 OAuthWebSecurity:
(OAuthWebSecurity.Login(provider, providerUserId, createPersistentCookie: false)
我试图从 xoauth_yahoo_guid(雅虎的身份验证 endopint 的响应字段)作为“providerUserId”值传递,但它不起作用。
在调试 Web 应用程序时,我注意到对于相同的 yahoo 帐户方法
var result = OAuthWebSecurity.VerifyAuthentication()
在 property 中返回 Yahoo openId result.ProviderUserId
。
谁能告诉我我做错了什么?
感谢您的时间。