如何获得访问令牌?(Reddit API)

And*_*eas 15 c# api reddit access-token

我想知道是否有可能在Reddit上获得永久访问令牌供个人使用?它只会是我使用的应用程序.

对于用户,访问令牌在1小时后到期.

我使用以下有关我的客户端ID和秘密的信息,我尝试尝试获取访问令牌.(MessageBox显示" 错误401 ")

如果用户将获得令牌,则必须在浏览器中单击"允许".这里描述得很好.https://github.com/reddit/reddit/wiki/OAuth2 这不是我追求的.我只是通过代码追求个人使用的访问令牌.这可能吗?

            String requestUrl = "https://ssl.reddit.com/api/v1/access_token";

        RestSharp.RestClient rc = new RestSharp.RestClient();
        RestSharp.RestRequest request = new RestSharp.RestRequest(requestUrl, RestSharp.Method.POST);
        request.AddHeader("Content-Type", "application/json");
        //request.AddHeader("Authorization", ""); //???
        request.AddHeader("x-li-format", "json");

        request.AddParameter("client_id", "abcdefg");
        request.AddParameter("client_secret", "abc123-456");
        request.AddParameter("grant_type", "abc123-456");
        request.AddParameter("scope", "identity");
        request.AddParameter("state", "adhasegw"); //whatever value
        request.AddParameter("duration", "permanent");
        request.AddParameter("redirect_uri", "http://mywebsite.co");

        request.RequestFormat = RestSharp.DataFormat.Json;

        RestSharp.RestResponse restResponse = (RestSharp.RestResponse)rc.Execute(request);
        RestSharp.ResponseStatus responseStatus = restResponse.ResponseStatus;



        MessageBox.Show(restResponse.Content.ToString() + "," + responseStatus.ToString());
Run Code Online (Sandbox Code Playgroud)

kem*_*che 15

截至目前,您无法检索永久访问令牌.你有两个选择接近.

第一种是在使用标准OAuth流时请求"刷新"令牌.通过在代码中将"duration"作为"永久"发送,这就是你所做的.刷新令牌可用于在没有用户干预的情况下自动检索新的1小时访问令牌; 唯一的手动步骤是初始检索刷新令牌.

第二种替代方法仅在编写供个人使用的脚本时使用,即使用password授权类型.reddit的"OAuth快速入门"维基页面上详细介绍了这些步骤,但我将在此总结:

  1. 使用type ="script" 创建OAuth客户端(在https://www.reddit.com/prefs/apps下)
  2. https://www.reddit.com/api/v1/access_token使用POST参数发出请求grant_type=password&username=<USERNAME>&password=<PASSWORD>.将您的客户端ID和密码作为HTTP基本身份验证发送.<USERNAME>必须注册为您发送的OAuth 2客户端ID的开发人员.


Ale*_*exG 5

client_id并且client_secret可以为一个书签交易帐户由将要生成https://www.reddit.com/prefs/apps和创建应用:


screenshot reddit.com/prefs/apps

我隐藏的部分是我的client_id

然后,您可以使用类似prawPython 这样的客户端来访问reddit:

import praw
r = praw.Reddit(client_id='insert id here',
                client_secret='insert secret here',
                user_agent='insert user agent')
page = r.subreddit('aww')
top_posts = page.hot(limit=None)
for post in top_posts:
    print(post.title, post.ups)
Run Code Online (Sandbox Code Playgroud)

您可以使用当前浏览器的用户代理,可以通过Google搜索“我的用户代理是什么”(其他方法)轻松找到。

  • 什么是“client_secret”?我看到你只有“client_id”。 (4认同)
  • 在Reddit授权应用页面点击“编辑”即可查看“client_secret” (2认同)