YII2 OAuth客户端Instagram-Instagram drops“;authclient=instagram";重定向时
我使用的是Yi2 oauthclinet扩展kotchuprik/Yi2 instagram authclient 所以这是可行的,但有一件事是行不通的 我像那样在instagram上注册了我的应用程序RedirlYII2 OAuth客户端Instagram-Instagram drops“;authclient=instagram";重定向时,oauth,yii2,instagram,Oauth,Yii2,Instagram,我使用的是Yi2 oauthclinet扩展kotchuprik/Yi2 instagram authclient 所以这是可行的,但有一件事是行不通的 我像那样在instagram上注册了我的应用程序Redirl myappurl/site/auth?authclient=instagram 所以我期望的重定向URL应该是这样的: myappurl/site/auth?authclient=instagram&code=.... 但它来了: myappurl/site/auth?c
myappurl/site/auth?authclient=instagram
所以我期望的重定向URL应该是这样的:
myappurl/site/auth?authclient=instagram&code=....
但它来了:
myappurl/site/auth?code=...
在浏览器中使用开发人员工具,我认识到:
https://www.instagram.com/accounts/login/ajax/
username=myusernam
password=mypassword
queryParams={"next":"/oauth/authorize?client_id=theclientid&
response_type=code&redirect_uri=myappurl/site/auth?authclient=instagram&
xoauth_displayname=MyApps&state=statenumbers"}
好了,下一个get请求是错误的
https://www.instagram.com/oauth/authorize?client_id=theclientid&
response_type=code&redirect_uri=myappurl%2Fsite%2Fauth%3Fauthclient&
xoauth_displayname=MyApps&state=statenumbers
client_id=theclientid
response_type=code
redirect_uri=myappurls%2Fsite%2Fauth%3Fauthclient
xoauth_displayname=MyApp
state=statenumbers
instagram不见了
instagram重定向的url为:
myappurl/site/auth?code=codenumbers&state=statenumbers
所以这是错误的authclient=instagram丢失了,我不知道为什么
有什么想法吗?我做了一些变通,不是很漂亮,但很有效
`class AuthAction extends \yii\authclient\AuthAction
{
public function run()
{
$clientId = Yii::$app->getRequest()->getQueryParam($this->clientIdGetParamName);
if (!empty($clientId)) {
$collection = Yii::$app->get($this->clientCollection);
if (!$collection->hasClient($clientId)) {
throw new NotFoundHttpException("Unknown auth client '{$clientId}'");
}
$client = $collection->getClient($clientId);
return $this->auth($client);
} else {
$clientId = 'instagram';
$collection = Yii::$app->get($this->clientCollection);
if (!$collection->hasClient($clientId)) {
throw new NotFoundHttpException("Unknown auth client '{$clientId}'");
}
$client = $collection->getClient($clientId);
return Yii::$app->response->redirect(['/site/auth','authclient'=>'instagram']);
}
// throw new NotFoundHttpException();
}
}`
因此,我认为instagram认识到,在该设备上,instagram用户已登录,返回的不是定义的或预期的带有authclient参数的url。或者它是一个Instagram bug:-)
如果有人有类似的问题,那就太好了。在这里,有更多的人被这个问题感染。因此,我们可以找到一个解决方案。您需要将参数
authclient
添加到您的操作中,如果我正确地得到它,当前SiteController
中的actionAuth
类似于函数actionAuth($code编号,$state)
,对吗?我像Yii2文档中那样集成了auth操作:“auth”=>['class'=>'\common\components\AuthAction',/'yii\authclient\AuthAction',successCallback'=…如果authclient作为参数返回,则其工作正常。问题是我不知道instagram返回的url为什么没有此参数。如果我再次调用auth操作,则返回的url正确且e登录/登录工作正常。但是我在哪里或为什么在没有autclient的情况下获得返回url。我找不到发生此参数删除的位置。