代码之家  ›  专栏  ›  技术社区  ›  Dylan Buth

从oauth的用户访问Youtube频道

  •  2
  • Dylan Buth  · 技术社区  · 6 年前

    我正在尝试获取所有频道,并最终为使用谷歌登录我的网站的用户获取所有视频。我正在使用Laravel Socialite设置我认为应该给予适当权限的范围。然后,我将为会话设置访问令牌。

    public function loginGoogle()
    {
       return Socialite::driver('google')->setScopes(['https://www.googleapis.com/auth/youtube.readonly',])->redirect();
    }
    

    在验证用户身份并保存访问令牌后处理回拨时,我运行以下操作:

    dd(\Youtube::getService()->channels->listChannels('snippet', ['managedByMe' => true, 'onBehalfOfContentOwner' => session('access_token')]));
    

    \Youtube 这只是我在网站上处理Youtube功能的门面。

    运行代码时,会引发以下错误:

    Client error: `GET https://www.googleapis.com/plus/v1/people/me?prettyPrint=false` resulted in a `403 Forbidden` response:
    

    {“error”:{“errors”:[{“domain”:“global”,“reason”:“insufficientPermissions”,“message”:“权限不足”}],“code”:4(截断…)

    我不知道我是在使用不正确的范围,还是在搞乱更大的东西。Youtube的文档在这方面没有太大帮助。他们只是说用户必须经过授权。。。是吗?

    这件事已经谈了几天了,我不知道下一步该怎么办。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Dylan Buth    6 年前

    正在更改

        return Socialite::driver('google')->setScopes(['https://www.googleapis.com/auth/youtube.readonly',])->redirect();
    

        return Socialite::driver('google')->scopes(['https://www.googleapis.com/auth/youtube.readonly',])->redirect();
    

    似乎解决了它。查看 documentation 这很有道理,为什么这样做行不通。