我创建了自己的OAuth2客户端以连接到Google API(特别是YouTube)。我第一次授权时,所有作品均符合预期:
POST
,https://accounts.google.com/o/oauth2/auth
等)对response_type=code
做一个redirect_uri=urn:ietf:wg:oauth:2.0:oob
POST
进行 token 请求https://accounts.google.com/o/oauth2/token
但是,我有一个签字按钮,这就是问题所在。这基本上将我存储在应用程序中的
access_token
和refresh_token
设置回nil
,只需这样:- (void)clearCredentials
{
_accessToken = nil;
_refreshToken = nil;
_tokenExpirationDate = nil;
}
然后,当我想再次登录时,我调用与以前相同的授权方法,所有参数都像第一次一样正确设置。
但是,在通过登录对话框时,我没有获得授权应用程序访问youtube帐户的页面,因此也没有获得可以从页面标题获取授权代码的页面。相反,它向我显示一个错误页面(
invalid_request
),该页面显示我未能提供response_type
。我也尝试撤消
access_token
。吊销可以按预期进行,但是在获得授权后,我仍然没有得到用户可以再次批准权限的页面。任何人都有线索可以指出正确的方向吗?我该怎么办?
最佳答案
我真的认为不应该使用UIWebView。从用户的 Angular 来看,这迫使用户输入密码(和OTP的2个因素),并给用户带来不良体验和安全性。您可以重定向到Safari浏览器并找回 token ,请参见
https://plus.google.com/+NaveenAgarwal/posts/AztHNnQh7w6
或使用Google+ SDK。它将重定向到现有的Google应用之一或浏览器,并为您提供 token 。
关于ios - YouTube OAuth2授权在重新授权时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20976236/