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快速入门"维基页面上详细介绍了这些步骤,但我将在此总结:
https://www.reddit.com/api/v1/access_token使用POST参数发出请求grant_type=password&username=<USERNAME>&password=<PASSWORD>.将您的客户端ID和密码作为HTTP基本身份验证发送.<USERNAME>必须注册为您发送的OAuth 2客户端ID的开发人员.甲client_id并且client_secret可以为一个书签交易帐户由将要生成https://www.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搜索“我的用户代理是什么”(其他方法)轻松找到。