我读过 tutorial关于 OAuth 2.0 和隐式授权类型。我仍然不明白隐式授权类型如何适用于移动设备(iOS 或 Android)。例如,如果我们创建一个 SSO 应用程序(如 Facebook)并制作一个 SDK 来提供此服务。 SSO 应用程序是通过实用方式还是通过 Web View 联系授权服务器?
还有一点是 - 隐式授权类型要求您发送重定向 URI。我知道您可以为 iOS 制作自定义 uri 模式并执行此操作。我不明白的是授权服务器如何调用设备上的自定义 URI。
最佳答案
对于移动应用程序中的 Oauth2,您可以将 redirect_uri
设置为一些虚拟 URL,例如 http://localhost/redirect/
,然后使用 webview 的“onload”事件来检查 access_token
例如在 iOS 中,您可以在 webview 中加载授权 url,并使用委托(delegate)方法检查 redirect_uri
是否有 access_token
,如下所示:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSURL *Url = [request URL];
...
}
您还可以使用 InAppBrowser
在 Phonegap 应用中使用 HTML5/JavaScript 执行此操作:
var loginWindow = window.open(login_url, '_blank', 'location=yes');
$(loginWindow).on('loadstart', function(e) {
var url = e.originalEvent.url;
var access_token = url.split("access_token=")[1];
...
}
关于android - 如何在 OAuth 2.0 中为移动应用程序使用隐式授权类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22332065/