JHo*_*zer 13 redirect android oauth httprequest amazon-cognito
我正在尝试创建一个Android项目,在该项目中,我可以通过使用户在浏览器中登录Amazon Cognito来授权用户,然后该用户应重定向回我的应用程序。不幸的是,当浏览器打开时,没有到达正确的登录页面,而是不断出现此错误:
在我的AuthenticatorActivity.java中:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_authenticator);
Uri authzUrl = Uri.parse("https://<myDomain>.auth.us-west-2.amazoncognito.com/login?response_type=token&client_id=<myClientId>&redirect_uri=myapp://mainAct");
Intent launchBrowser = new Intent(Intent.ACTION_VIEW, authzUrl);
startActivity(launchBrowser);
}
Run Code Online (Sandbox Code Playgroud)
在AndroidManifest中:
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:host="mainAct" android:scheme="myapp"></data>
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚我在做什么错。我错过了一步吗?
小智 11
请检查您的回调网址并注销网址。正确的格式是:
app_client_name:https://www.myapp.com/
Run Code Online (Sandbox Code Playgroud)
好吧,我在这里留下一个小消息,供以后可能会发现它的人使用。我遇到了完全相同的问题,但是作为Cognito和IdP / SSO的新手,我不知道如何解决此问题。这是我为最终解决此问题所做的工作。我们正在与外部服务集成,并且遇到了此错误。在Chrome开发者工具->网络下,我开始记录该URL的访问,然后再次尝试SSO集成。列表中显示了一个URL,该URL通过重定向到URL访问了Cognito。该URL必须与Cognito的“回调URL”下列出的URL相同。
希望这可以节省将来的时间。
扩展迪米特里斯 的答案/sf/answers/4231921291/
如果您为负载均衡器指定了 DNS Route53。您可以在回调 URL 中指定相同的内容。
https://www.example.com/oauth2/idpresponse
参考: https: //aws.amazon.com/premiumsupport/knowledge-center/elb-configure-alb-authentication-idp/
redirectSignIn我犯的另一个愚蠢的错误是in的值完全错误,并且花了我几个小时才弄清楚aws-exports.js。当您通过 Amplify CLI 多次修改此配置的值时,它会附加一个逗号,将该值视为列表,为您提供如下所示的内容
"redirectSignIn": "http://localhost:3000/,http://localhost:3000/,http://localhost:3000/,http://localhost:3000/",
Run Code Online (Sandbox Code Playgroud)
不幸的是,当使用 HostedUI 时,该值被视为字符串。
小智 5
这里未涵盖的答案(可能是由于最近更新的文档)是关于logout_uri. 如果您将注销 URL 设置为与登录 URL 不同的 URL,您将收到参数重定向不匹配错误redirect_uri。
例如
Log in URL: http://localhost:3000/log_in.html
Call back URL(after login): http://localhost:3000/logged_in.html
Sign out URL(after logout): http://localhost:3000/logged_out.html
Run Code Online (Sandbox Code Playgroud)
我正在使用redirect_uri参数向自定义注销 URL 页面发送请求,如下所示
https://xxx.auth.ap-southeast-1.amazoncognito.com/logout?client_id=xxx&response_type=code&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Flogged_out.html
Run Code Online (Sandbox Code Playgroud)
这导致了重定向不匹配错误。
我必须更改才能logout_uri使其正常工作。
https://xxx.auth.ap-southeast-1.amazoncognito.com/logout?client_id=xxx&response_type=code&logout_uri=http%3A%2F%2Flocalhost%3A3000%2Flogged_out.html
Run Code Online (Sandbox Code Playgroud)
PS:请确保AWS Cognito 控制台中的redirect_uri或logout_uri与您的代码相同,否则将导致重定向不匹配错误。
文档: https: //docs.aws.amazon.com/cognito/latest/developerguide/logout-endpoint.html#get-logout
| 归档时间: |
|
| 查看次数: |
9092 次 |
| 最近记录: |