YII2 OAuth客户端Instagram-Instagram drops“;authclient=instagram";重定向时

YII2 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

我使用的是Yi2 oauthclinet扩展kotchuprik/Yi2 instagram authclient

所以这是可行的,但有一件事是行不通的

我像那样在instagram上注册了我的应用程序Redirl

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。我找不到发生此参数删除的位置。