在我的Python脚本中使用Flask进行Spotify授权时找不到

在我的Python脚本中使用Flask进行Spotify授权时找不到,python,heroku,oauth,flask,spotify,Python,Heroku,Oauth,Flask,Spotify,我正在尝试上载Python脚本,以授权用户使用Spotify iOS SDK。老实说,我不知道我在做什么,但文件真的很差。我使用Heroku作为web服务器,但是当我使用foreman start时,我只在localhost:5000上得到这个: Not Found The requested URL was not found on the server. If you entered the URL manually please check your spelling and try ag

我正在尝试上载Python脚本,以授权用户使用Spotify iOS SDK。老实说,我不知道我在做什么,但文件真的很差。我使用Heroku作为web服务器,但是当我使用
foreman start
时,我只在localhost:5000上得到这个:

Not Found
The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.
spotify_token_swap.py如下所示:

import cherrypy
from cherrypy import tools
import simplejson as json
import requests
import os
from flask import Flask

app = Flask(__name__)

# CHANGE these values to your own
k_client_id = "spotify-ios-sdk-beta"
k_client_secret = "ba95c775e4b39b8d60b27bcfced57ba473c10046"
k_client_callback_url = "spotify-ios-sdk-beta://callback"

verbose = True

class SpotifyTokenSwap(object):
    @cherrypy.expose
    @tools.json_out()
    def swap(self, code=None):
        params = {
            'grant_type': 'authorization_code',
            'client_id': k_client_id,
            'client_secret': k_client_secret,
            'redirect_uri': k_client_callback_url,
            'code' : code
        }
        r = requests.post('https://ws.spotify.com/oauth/token', params)
        cherrypy.response.status = r.status_code
        if verbose:
            print
            print code
            print r.status_code
            print r.text
            print
        return r.json()

def CORS():
    cherrypy.response.headers["Access-Control-Allow-Origin"] = "*"


if __name__ == '__main__':
    cherrypy.tools.CORS = cherrypy.Tool('before_handler', CORS)
    root = SpotifyTokenSwap()

    config = {
        'global' : {
            'server.socket_host' : '0.0.0.0',
            'server.socket_port' : 5000,
            'server.thread_pool' : 10,
        # 'environment' : 'production',
        },
        '/' : {
            'tools.CORS.on' : True,
    }
    }
    cherrypy.quickstart(root, '/', config=config)
我在Procfile中使用以下命令启动foreman Web服务器:

web: gunicorn spotify_token_swap:app

我很确定您指向了错误的wsgi应用程序。从Procfile指向app意味着flask正在为页面提供服务。您使用cherrypy注册并构建了所有内容,并且没有在flask中包含任何路由。因此应用程序对象没有路由,即没有“/”。所以你需要改用cherrypy应用程序

因为您要删除flask应用程序部分,所以应该删除
if uuuu name uuuu=='\uuuu main uuu':
行,并将其余部分更改为

config = {
    'global' : {
        'server.socket_host' : '0.0.0.0',
        'server.socket_port' : 5000,
        'server.thread_pool' : 10,
    # 'environment' : 'production',
    },
    '/' : {
        'tools.CORS.on' : True,
    }
}
wsgiapp = cherrypy.Application(SpotifyTokenSwap(), '/', config=config)
然后在proc文件中使用它

web: gunicorn spotify_token_swap:wsgiapp

我不习惯Foreman或cherrypy,但我认为这是您需要做的。

我很确定您指向了错误的wsgi应用程序。从Procfile指向app意味着flask正在为页面提供服务。您使用cherrypy注册并构建了所有内容,并且没有在flask中包含任何路由。因此应用程序对象没有路由,即没有“/”。所以你需要改用cherrypy应用程序

因为您要删除flask应用程序部分,所以应该删除
if uuuu name uuuu=='\uuuu main uuu':
行,并将其余部分更改为

config = {
    'global' : {
        'server.socket_host' : '0.0.0.0',
        'server.socket_port' : 5000,
        'server.thread_pool' : 10,
    # 'environment' : 'production',
    },
    '/' : {
        'tools.CORS.on' : True,
    }
}
wsgiapp = cherrypy.Application(SpotifyTokenSwap(), '/', config=config)
然后在proc文件中使用它

web: gunicorn spotify_token_swap:wsgiapp

我不习惯Foreman或cherrypy,但我认为这是您需要做的。

我很确定您指向了错误的wsgi应用程序。从Procfile指向app意味着flask正在为页面提供服务。您使用cherrypy注册并构建了所有内容,并且没有在flask中包含任何路由。因此应用程序对象没有路由,即没有“/”。所以你需要改用cherrypy应用程序

因为您要删除flask应用程序部分,所以应该删除
if uuuu name uuuu=='\uuuu main uuu':
行,并将其余部分更改为

config = {
    'global' : {
        'server.socket_host' : '0.0.0.0',
        'server.socket_port' : 5000,
        'server.thread_pool' : 10,
    # 'environment' : 'production',
    },
    '/' : {
        'tools.CORS.on' : True,
    }
}
wsgiapp = cherrypy.Application(SpotifyTokenSwap(), '/', config=config)
然后在proc文件中使用它

web: gunicorn spotify_token_swap:wsgiapp

我不习惯Foreman或cherrypy,但我认为这是您需要做的。

我很确定您指向了错误的wsgi应用程序。从Procfile指向app意味着flask正在为页面提供服务。您使用cherrypy注册并构建了所有内容,并且没有在flask中包含任何路由。因此应用程序对象没有路由,即没有“/”。所以你需要改用cherrypy应用程序

因为您要删除flask应用程序部分,所以应该删除
if uuuu name uuuu=='\uuuu main uuu':
行,并将其余部分更改为

config = {
    'global' : {
        'server.socket_host' : '0.0.0.0',
        'server.socket_port' : 5000,
        'server.thread_pool' : 10,
    # 'environment' : 'production',
    },
    '/' : {
        'tools.CORS.on' : True,
    }
}
wsgiapp = cherrypy.Application(SpotifyTokenSwap(), '/', config=config)
然后在proc文件中使用它

web: gunicorn spotify_token_swap:wsgiapp

我不习惯Foreman或cherrypy,但我认为这是您需要做的。

您可以使用此python服务:

  • 下载谷歌应用引擎
  • 安装发射器
  • 去下载这个项目,它会有你需要的一切
  • 在GoogleAppEngineLauncher中,按add-project
  • 去谷歌应用引擎网站创建一个项目,在这里你会得到一个应用id
  • 在app.yaml中,将spotifyauth替换为app id
  • 新闻发布
  • 完成后,您现在可以通过app-id.appspot.com/swap在web上访问它

  • 在我得到这个解决方案之前,我已经在Python和Ruby的丛林中呆了几个小时,干杯

    您可以改用此python服务:

  • 下载谷歌应用引擎
  • 安装发射器
  • 去下载这个项目,它会有你需要的一切
  • 在GoogleAppEngineLauncher中,按add-project
  • 去谷歌应用引擎网站创建一个项目,在这里你会得到一个应用id
  • 在app.yaml中,将spotifyauth替换为app id
  • 新闻发布
  • 完成后,您现在可以通过app-id.appspot.com/swap在web上访问它

  • 在我得到这个解决方案之前,我已经在Python和Ruby的丛林中呆了几个小时,干杯

    您可以改用此python服务:

  • 下载谷歌应用引擎
  • 安装发射器
  • 去下载这个项目,它会有你需要的一切
  • 在GoogleAppEngineLauncher中,按add-project
  • 去谷歌应用引擎网站创建一个项目,在这里你会得到一个应用id
  • 在app.yaml中,将spotifyauth替换为app id
  • 新闻发布
  • 完成后,您现在可以通过app-id.appspot.com/swap在web上访问它

  • 在我得到这个解决方案之前,我已经在Python和Ruby的丛林中呆了几个小时,干杯

    您可以改用此python服务:

  • 下载谷歌应用引擎
  • 安装发射器
  • 去下载这个项目,它会有你需要的一切
  • 在GoogleAppEngineLauncher中,按add-project
  • 去谷歌应用引擎网站创建一个项目,在这里你会得到一个应用id
  • 在app.yaml中,将spotifyauth替换为app id
  • 新闻发布
  • 完成后,您现在可以通过app-id.appspot.com/swap在web上访问它

  • 在我得到这个解决方案之前,我已经在Python和Ruby的丛林中呆了几个小时,干杯

    我很不明白你想做什么。你不应该发布密钥,你的回调看起来。。。错。你不应该把樱桃和烧瓶混在一起。我的意思是你可以,但是你为什么要这么做呢?如果我删除了Flask代码,那么我如何从Procfile启动服务呢?我只是在第页上找不到。我很困惑你们想做什么。你不应该发布密钥,你的回调看起来。。。错。你不应该把樱桃和烧瓶混在一起。我的意思是你可以,但是你为什么要这么做呢?如果我删除了Flask代码,那么我如何从Procfile启动服务呢?我只是在第页上找不到。我很困惑你们想做什么。您不应该发布密钥和回拨密码