使用Python的Instagram客户端身份验证

时间:2018-04-04 18:02:58

标签: python bottle urlparse

我目前正在研究一个瓶子项目,并将使用Instagram api。我希望使用客户端身份验证,但是我遇到了访问令牌的问题,因为它不会作为参数返回。

我在这里提出要求:

  

https://api.instagram.com/oauth/authorize/?client_id=client_id&redirect_uri=redirect_uri&response_type=token&scope=basic+follower_list

应用程序被正确地重定向到令牌页面,我甚至可以在URL中看到令牌。但是当我试图解析它时,它就是空的。

@route('/oauth_callback')
def success_message():

token = request.GET.get("access_token")

print token.values()
return "success"

token.values()返回一个空列表。

ps:请记住,当我尝试使用服务器端身份验证执行相同的操作时,我可以成功获取代码并将其交换为令牌。

1 个答案:

答案 0 :(得分:1)

一旦你对Instagram api进行查询,你必须收到以下回复吗?

  

http://your-redirect-uri#access_token=ACCESS-TOKEN

之后的部分被称为 片段 而不是query_string参数,并且您无法在服务器端检索该信息瓶。

要实际获取片段,请使用bottle.request.urlparts

  

<强> urlparts

     

url字符串为urlparse.SplitResult元组。元组   包含(scheme,host,path,query_string和fragment),但是   片段始终为空,因为它对服务器不可见。

使用SDK,最好是服务器端操作 - &gt; https://github.com/facebookarchive/python-instagram

如果您将采用这种方法,那么管理一个解析访问令牌的JavaScript,然后发布到您的瓶子api供我消费,我不建议......

来自https://instagram.com/developer/authentication/

  

客户端(隐式)身份验证

     

如果您正在构建一个没有服务器组件的应用程序(a   纯粹的javascript应用程序,例如),你会发现它是   无法完成上面的第三步以接收您的access_token   无需将密码存储在客户端上。你应该   永远不会将您的client_id秘密传递或存储到客户端。对于这些   情况有隐式认证流程。