如何通过php安全地检索Google用户ID?

时间:2019-01-22 12:04:57

标签: php oauth-2.0 google-signin

我正在尝试建立一个用户可以通过Google登录进行注册的系统,我需要有关用户的详细信息,该信息将始终保持不变。我以为那是ID,但这几乎是我无法通过PHP获得的唯一细节。

我可以使用令牌ID获得有关用户的详细信息,它将返回此信息。

"iss": "https://accounts.google.com",
 "sub": "110169484474386276334",
 "azp": "1008719970978-hb24n2dstb40o45d4feuo2ukqmcc6381.apps.googleusercontent.com",
 "aud": "1008719970978-hb24n2dstb40o45d4feuo2ukqmcc6381.apps.googleusercontent.com",
 "iat": "1433978353",
 "exp": "1433981953",

 // These seven fields are only included when the user has granted the "profile" and
 // "email" OAuth scopes to the application.
 "email": "testuser@gmail.com",
 "email_verified": "true",
 "name" : "Test User",
 "picture": "https://lh4.googleusercontent.com/-kYgzyAWpZzJ/ABCDEFGHI/AAAJKLMNOP/tIXL9Ir44LE/s99-c/photo.jpg",
 "given_name": "Test",
 "family_name": "User",
 "locale": "en"

但是我找不到一个唯一且不变的细节,因此我可以查看他们的帐户是否已经存在。还有其他我可以使用的东西,还是可以通过php检索用户的ID?

1 个答案:

答案 0 :(得分:0)

我不确定上面的标签或标签的位置,但是查看值(并将它们与我自己的Oauth收集的Gmail用户ID进行比较),#include <iostream> using namespace std; template< class T> struct node{ T m_data; node* m_next_node; node(T t_data, node* t_node) : m_data(t_data), m_next_node(t_node){} ~node(){ std::cout << "Address :" << this << " Destroyed" << std::endl; } }; template<class T> class linked_list { public: node<T>* m_list; linked_list(): m_list(nullptr){} void add_node(T t_data) { node<T>* _new_node = new node<T>(t_data, nullptr); _new_node->m_next_node = m_list; m_list = _new_node; } void populate_nodes(node<T>* t_node) { if (t_node != nullptr) { std::cout << "Data =" << t_node->m_data << ", Address =" << t_node->m_next_node << std::endl; populate_nodes(t_node->m_next_node); } } void delete_nodes(node<T>* t_node) { if (t_node != nullptr) { delete_nodes(t_node->m_next_node); } delete(t_node); } }; int main() { linked_list<float>* _ll = new linked_list<float>(); _ll->add_node(1.3); _ll->add_node(5.5); _ll->add_node(10.1); _ll->add_node(123); _ll->add_node(4.5); _ll->add_node(23.6); _ll->add_node(2); _ll->populate_nodes(_ll->m_list); _ll->delete_nodes(_ll->m_list); delete(_ll); return 0; } 值就是用户ID字段。

从直觉上讲,电子邮件不是唯一的,因为在一个帐户中可以有多个电子邮件别名,并且您可以更改帐户中的电子邮件地址。