youtube oauth可以从localhost运行,但不能从生产中运行

时间:2012-01-19 20:27:51

标签: oauth youtube youtube-api

我正在制作的网站可以将您的帐户与您的YouTube帐户相关联。从localhost,这可以很好地工作,但是从该站点,即step1tuts.appspot.com,它不起作用。当我将用户从我的网站重定向到身份验证页面时,我收到以下消息:

  

您请求的页面无法显示。另一个网站是   请求访问您的Google帐户,但发送的格式不正确   请求。请联系您尝试使用的网站   收到此消息以通知他们错误。

处理此身份验证的代码如下所示:

client = youtube.get_client()

client.developer_key = 'AI39si759T7YcZ4E3XvICpZr3cGwQ0Ev4AjwyJrVSS6AW6NUc7_t10DX1JsngWzU4YoGjpsjAUTejav0hgXp9vDuM7a83tDXzQ'
client.client_id = 'step1tuts.com'

domain = 'http://' + os.environ['HTTP_HOST']+"/user/youtube_token"
scope = 'http://gdata.youtube.com'
url = client.GenerateAuthSubURL(domain,scope,secure=False,session=True)
self.redirect(str(url))
return

我正在重定向到的url,以/ auth_token结尾然后处理它从youtube返回的令牌,但错误发生在这里。

为了清楚起见,youtube.get_client方法是我开发的方法,用于重用使客户端可以准备就绪的过程:代码为:

def get_client():
    client = gdata.youtube.service.YouTubeService()
    run_on_appengine(client)

    client.developer_key = 'AI39si759T7YcZ4E3XvICpZr3cGwQ0Ev4AjwyJrVSS6AW6NUc7_t10DX1JsngWzU4YoGjpsjAUTejav0hgXp9vDuM7a83tDXzQ'
    client.client_id = 'step1tuts.com'
    user = users.get_current_user()
    if(user and user.yt_token):
        client.SetAuthSubToken(user.yt_token)
    return client

在粘贴此代码时,我注意到我正在复制我给开发人员密钥的部分。我认为这不是问题所在,但我会从代码的身份验证部分中删除它,看看会发生什么。

通过观察用户被重定向到的URL,问题必须是可追踪的,所以只是为了一些额外的信息,我在使用SDK在本地计算机上使用应用程序时重定向到的URL,它的工作原理:

http://www.youtube.com/auth_sub_request?scope=http%3A%2F%2Fgdata.youtube.com&session=1&next=http%3A%2F%2Flocalhost%3A8081%2Fuser%2Fyoutube_token%3Fauth_sub_scopes%3Dhttp%253A%252F%252Fgdata.youtube.com&secure=0&hd=default

当我在制作中使用相同的代码时,我被重定向到的网址:

http://www.youtube.com/auth_sub_request?scope=http%3A%2F%2Fgdata.youtube.com&session=1&next=http%3A%2F%2Fstep1tuts.appspot.com%2Fuser%2Fyoutube_token%3Fauth_sub_scopes%3Dhttp%253A%252F%252Fgdata.youtube.com&secure=0&hd=default

1 个答案:

答案 0 :(得分:1)

有趣。除此之外,所有其他网址都有效。可能是youtube方面的一个错误?我刚加了一个'。'在您的域的末尾,请求似乎通过。也许你可以尝试一下?

http://www.youtube.com/auth_sub_request?scope=http%3A%2F%2Fgdata.youtube.com&session=1&next=http%3A%2F%2Fstep1tuts.appspot.com.%2Fuser%2Fyoutube_token%3Fauth_sub_scopes%3Dhttp%253A%252F%252Fgdata.youtube.com&secure=0&hd=default