我正在编写Chrome扩展程序。
我想要做的是:检查用户当前是否登录。如果是,请获取他/她的用户名。如果没有,请显示登录按钮。
我想同时从不同的服务获取登录状态:mediawiki和xpressengine。
我该如何解决这个问题?
答案 0 :(得分:1)
如果用户已经登录,您可以使用api检查,如果是,则获取用户名。例如。如果您在网络浏览器中打开https://www.mediawiki.org/w/api.php?action=query&meta=userinfo,则可以看到未登录用户的以下回复:
{
"batchcomplete": "",
"query": {
"userinfo": {
"id": 0,
"name": "X.X.X.X",
"anon": ""
}
}
}
请参阅name
和anon
键。 name
密钥始终包含用户名(在这种情况下是请求客户端的ip),另一方面,anon
密钥仅附加到userinfo
对象,如果用户是匿名的(所以你可以放心地假设,如果密钥存在,用户是匿名的,在响应的较新格式化版本中,这将被布尔值替换,而不是作为值的空字符串)。
以下来自登录用户
{
"batchcomplete": "",
"query": {
"userinfo": {
"id": 000000,
"name": "XXXXXXXXX"
}
}
}
查看丢失的anon
密钥和更改的name
密钥。此外,ìd
键现在包含真实用户ID,而不是默认0
(未分配给任何现有用户)。
如果您想使用用户名和密码登录用户,可以使用the login api endpoint。
但是,如果您想为其他应用程序(例如您的扩展程序)提供登录可能性,您可能需要使用OAuth,而不是login / userinfo api,这需要用户为您提供其用户名和密码。帐户,这可能不是获得信任的最佳方法:)可以在OAuth help page找到维基媒体wikis(mediawiki.org,wikipedia.org,...)中使用的OAuth系统的信息,可以在help page for developers和the extension page上找到开发人员的信息。