/
oauth2.cpp
105 lines (84 loc) · 2.61 KB
/
oauth2.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include "oauth2.h"
#include <QDebug>
#include <QApplication>
#include "logindialog.h"
#include <QSettings>
#include <QMessageBox>
OAuth2::OAuth2(QWidget* parent)
{
m_strEndPoint = "https://accounts.google.com/o/oauth2/auth";
m_strScope = "https://www.googleapis.com/auth/books";
m_strClientID = "YOUR_CLIENT_ID_HERE";
m_strRedirectURI = "YOUR_REDIRECT_URI_HERE";
m_strResponseType = "token";
m_strCompanyName = "Google"; //You company here
m_strAppName = "Test Google API Client"; //Your application name here
m_pLoginDialog = new LoginDialog(parent);
m_pParent = parent;
connect(m_pLoginDialog, SIGNAL(accessTokenObtained()), this, SLOT(accessTokenObtained()));
}
void OAuth2::setScope(const QString& scope)
{
m_strScope = scope;
}
void OAuth2::setClientID(const QString& clientID)
{
m_strClientID = clientID;
}
void OAuth2::setRedirectURI(const QString& redirectURI)
{
m_strRedirectURI = redirectURI;
}
void OAuth2::setCompanyName(const QString& companyName)
{
m_strCompanyName = companyName;
}
void OAuth2::setAppName(const QString& appName)
{
m_strAppName = appName;
}
QString OAuth2::loginUrl()
{
QString str = QString("%1?client_id=%2&redirect_uri=%3&response_type=%4&scope=%5").arg(m_strEndPoint).arg(m_strClientID).
arg(m_strRedirectURI).arg(m_strResponseType).arg(m_strScope);
qDebug() << "Login URL" << str;
return str;
}
QString OAuth2::accessToken()
{
return m_strAccessToken;
}
bool OAuth2::isAuthorized()
{
return m_strAccessToken != "";
}
void OAuth2::startLogin(bool bForce)
{
QSettings settings(m_strCompanyName, m_strAppName);
QString str = settings.value("access_token", "").toString();
qDebug() << "OAuth2::startLogin, token from Settings" << str;
if(m_strClientID == "YOUR_CLIENT_ID_HERE" || m_strRedirectURI == "YOUR_REDIRECT_URI_HERE")
{
QMessageBox::warning(m_pParent, "Warning",
"To work with application you need to register your own application in <b>Google</b>.\n"
"Learn more from <a href='http://code.google.com/p/qt-google-tasks/wiki/HowToRegisterYourAppIicationInGoogle'>here</a>");
return;
}
if(str.isEmpty() || bForce)
{
m_pLoginDialog->setLoginUrl(loginUrl());
m_pLoginDialog->show();
}
else
{
m_strAccessToken = str;
emit loginDone();
}
}
void OAuth2::accessTokenObtained()
{
QSettings settings(m_strCompanyName, m_strAppName);
m_strAccessToken = m_pLoginDialog->accessToken();
settings.setValue("access_token", m_strAccessToken);
emit loginDone();
}