ios - YouTube OAuth2授权在重新授权时失败

标签 ios iphone youtube oauth-2.0 google-oauth

我创建了自己的OAuth2客户端以连接到Google API(特别是YouTube)。我第一次授权时,所有作品均符合预期:

  • 我使用适当的参数(POSThttps://accounts.google.com/o/oauth2/auth等)对response_type=code做一个redirect_uri=urn:ietf:wg:oauth:2.0:oob
  • 我在UIWebView中处理响应,让用户浏览登录对话框
  • 我从最后一页的标题中获取了请求 token 所需的授权码
  • 我对POST进行 token 请求https://accounts.google.com/o/oauth2/token
  • 我获得了access_token和refresh_token,并将它们存储在我的应用程序


  • 但是,我有一个签字按钮,这就是问题所在。这基本上将我存储在应用程序中的access_tokenrefresh_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/

    相关文章:

    ios - 如何让按钮从下午 3 点到晚上 9 点打开?

    objective-c - 如何在 objective-c 中给出 toast 信息

    ios - AVAudioConverter float32/48khz -> int16/16khz 转换失败

    ios - 在 iOS 6 上发送全局触摸事件

    iphone - 将对象作为参数传递给 iOS 上 Objective C 中的 wcf 服务

    ios - 单元测试本地通知

    youtube - Youtube Content ID使用Apps脚本通过API获取所有权信息

    php - YouTube链接到iframe?

    javascript - 如何为基于 youtube.com/embed URL 的链接添加类?

    ios - 如何限制文本字段输入的长度 - Swift 2