从googleapipython客户端撤销函数



我正在使用google api python客户端的内置revoke方法从django应用程序创建一个注销函数,但它似乎不起作用。这是我的密码。

def google_logout(request, user_id = None):
    storage = Storage(CredentialsModel, 'id', user_id, 'credential')
    credential = storage.get()
    if credential is not None:
        cr_json = credential.to_json()
        credential = credential.new_from_json(cr_json)
        http = httplib2.Http()
        http = credential.authorize(http)
        try:
        # Don't know yet why this is always raising an exception.
            credential.revoke(http)
            storage.delete()
        except TokenRevokeError:
            return HttpResponseBadRequest('Invalid Token.')
    else:
        return redirect('authentication:google_login')

当我使用django 1.4.5时,这是有效的,但后来我需要升级到1.5.1,现在它不起作用了。这是django的问题吗?我打赌不会。请帮忙。

附言:我知道我可以通过手动将access_token传递到此url来撤销令牌https://accounts.google.com/o/oauth2/revoke?token={token},但我想使用api中提供的方法。

即使access_type设置为offline,如果您过去收到过刷新令牌,并且没有将查询参数approval_prompt参数集额外发送到force,则可能无法取回刷新令牌。

这尤其令人沮丧,并且可能在调试吊销过程中发生。因为你可能经常审批和删除凭据,有时谷歌可能会记住审批和授权,而不需要经过强制审批流程,在这种情况下,你将不会得到刷新令牌,而客户端API需要刷新令牌才能撤销。

相关内容

  • 没有找到相关文章

最新更新