我正在尝试连接到R中的StackExchange API。
当我尝试:
library(httr)
end <- oauth_endpoint(authorize = "https://stackoverflow.com/oauth",
access = "https://stackoverflow.com/oauth")
myapp <- oauth_app("myapp",
key = "KEY", # tried swapping these
secret = "CLIENT SECRET",
redirect_uri = "https://stackoverflow.com/oauth/login_success")
token <- oauth2.0_token(end,
myapp)
浏览器打开但会导致以下消息(在浏览器中):
Couldn't parse `client_id`
如果我尝试使用key
和secret
的相反(反向)值,或将key
设置为值secret=NULL
且key
的事件,也会发生这种情况没有特权访问的测试。)
StackExchange API docs说他们给你的client_secret
值并不是真正的秘密,但oauth_app
值是。secret
。在((
帮助中,它表示key = ""
“不等同于密码,并不是真正的秘密”。有趣。
现在我只是想建立一个初始测试连接。
更新的
我很好奇,如果它实际上是一个无法解析特殊字符的问题。我尝试在我的密钥和client_secret中转义2个括号(class Tour extends Model
{
//
protected $fillable = [
'name',
'price',
'category',
'overview',
'activity',
'exclusion',
'inclusion',
'policies',
'guide_id',
'province_id'
];
public function tourImages(){
return $this -> hasMany('App\TourImage');
}
}
class TourImage extends Model
{
//
protected $fillable = [
'name',
'path',
'tour_id'
];
public function tour(){
return $this -> belongsTo('App\Tour');
}
}
)。这并没有改变任何事情。然后我尝试将两者都设置为一个空字符串(即public function index($province_id = null)
{
$tours = Tour::where('province_id', $province_id)->get();
return view('tours.index', ['tours' => $tours]);
}
等)然后以某种方式导致相同的结果。我觉得这是一个线索,但我仍然不知道出了什么问题。
答案 0 :(得分:2)
您正在使用implicit ("Client side") OAuth(SE API Doc)。
这意味着auth序列应如下所示:
您的应用HTTP GETS:
https://stackexchange.com/oauth/dialog?client_id=4709&scope=private_info&redirect_uri=https://stackexchange.com/oauth/login_success
根据您的具体情况设置client_id
和scope
。
然后,您的应用会重定向到:
https://stackexchange.com/oauth/login_success#access_token=wdR8Lm7m4ibD48lfrCcFxQ))&expires=86399
例如。
其中access_token
是您需要身份验证的后续调用所需的内容。
我不是编码员,但是猜测语法应该是这样的:
myapp <- oauth_app("myapp",
client_id = "{Your App's ID}",
scope = "private_info", # Or whatever is desired. See the doc page linked above
redirect_uri = "https://stackoverflow.com/oauth/login_success")
client_secret
仅用于服务器端(显式)OAuth。key
,OAuth是否需要,以达到配额目的。答案 1 :(得分:0)
我遇到了同样的错误,我的问题是我将客户端机密用作我的client_id参数的值