![](/img/trans.png)
[英]Manage users on my website using OpenID, Social Login and Amazon Cognito
[英]Trouble using Login with Amazon
我一直试图将“使用亚马逊登录”按钮集成到我的网站中,但一直失败。 我一直在通过以下网站遵循AWS指导: http : //login.amazon.com/website 。 我已经在目录中创建了一个单独的login.html文件和handle_login.php文件。
login.html :
<a href="#" id="LoginWithAmazon">
<img border="0" alt="Login with Amazon"
src="https://images-na.ssl-images-amazon.com/images/G/01/lwa/btnLWA_gold_156x32.png"
width="156" height="32" />
</a>
<script type="text/javascript">
document.getElementById('LoginWithAmazon').onclick = function() {
options = { scope : 'profile' };
amazon.Login.authorize(options, 'http://aws2.paperplane.io/handle_login.php');
return false;
};
</script>
<div id="amazon-root"></div>
<script type="text/javascript">
window.onAmazonLoginReady = function() {
amazon.Login.setClientId('amzn1.application-oa2-client.126f2098b3a74619a685a56af94196dc');
};
(function(d) {
var a = d.createElement('script'); a.type = 'text/javascript';
a.async = true; a.id = 'amazon-login-sdk';
a.src = 'https://api-cdn.amazon.com/sdk/login1.js';
d.getElementById('amazon-root').appendChild(a);
})(document);
</script>
handle_login.php: //验证访问令牌是否属于我们$ c = curl_init(' https://api.amazon.com/auth/o2/tokeninfo?access_token='。urlencode ($ _ REQUEST ['access_token']) ); curl_setopt($ c,CURLOPT_RETURNTRANSFER,true);
$r = curl_exec($c);
curl_close($c);
$d = json_decode($r);
if ($d->aud != 'amzn1.application-oa2- client.126f2098b3a74619a685a56af94196dc') {
// the access token does not belong to us
header('HTTP/1.1 404 Not Found');
echo 'Page not found';
exit;
}
// exchange the access token for user profile
$c = curl_init('https://api.amazon.com/user/profile');
curl_setopt($c, CURLOPT_HTTPHEADER, array('Authorization: bearer ' . $_REQUEST['access_token']));
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
$r = curl_exec($c);
curl_close($c);
$d = json_decode($r);
echo sprintf('%s %s %s', $d->name, $d->email, $d->user_id);
任何帮助将非常感激!!
Paperplane.io在其托管上不支持PHP文件:
我想澄清一点:Paperplane.io不支持任何服务器端脚本语言,例如PHP。
http://blog.paperplane.io/2013/09/18/using-wget-to-make-a-non-static-site-static.html
因为您没有在说什么错误,也没有描述它是如何失败的,所以可能有很多错误。 这是一般的调试指南。
在Cloud9上,HTML和PHP / Apache / MySQL模板都将提供.php页面, 但是只有PHP / Apache / MySQL模板启用了cURL 。 在handle_login
页面中进行的后端调用需要cURL。 确保选择正确的模板。
在应用https://[workspace name]-[your username].c9users.io/[filename]
设置应用程序时,页面的URL类似于https://[workspace name]-[your username].c9users.io/[filename]
。 设置名称,描述和隐私URL后,必须设置Web设置。
我知道这两个字段都说是可选的,但是根据您如何设置授权流程 ,它们是可选的。
您需要在此处提供有效的来源。 那不是确切的页面,而是根URL(即https://www.amazon.com
是许多亚马逊购物页面的根URL)。
您需要在两个文件中将凭据更改为您的 Client ID
。 另外,在上面粘贴的内容中,ID的中间有一些空格,因此可能是一个问题。
确保返回URL实际上指向同一域上的handle_login
。
amazon.Login.authorize(options,'https://[workspace name]-[your username].c9users.io/handle_login.php');
如果确保所有这些都正确,则运行演示脚本应该没有问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.