【发布时间】:2014-08-07 11:56:38
【问题描述】:
我正在我的网络应用程序上实现 google+ 登录。 我通过引用此link 进行了尝试。
我的 google+ 登录按钮如下:
<div id="signinButton">
<span class="g-signin"
data-scope="https://www.googleapis.com/auth/plus.login"
data-clientid=[MY_CLIENT_ID]
data-accesstype="offline"
data-cookiepolicy="single_host_origin"
data-callback="signInCallback"> </span>
</div>
我已经复制了我网页上面链接中给出的js。
获得授权码后,我将其转发到我的 servlet,下面是我形成 url 以获取 tokenResponse 的实现。 注意:我没有将谷歌库用于服务器端实现。
这是我的 url 形成代码:
String httpsURL = "https://accounts.google.com/o/oauth2/token";
String query = "code="+code;
query += "&";
query += "client_id=[MY_CLIENT_ID]&";
query += "client_secret=[CLIENT_SECRET]&";
query += "redirect_uri=https://localhost:8443/oauth2callback&";
query += "grant_type=authorization_code";
try{
URL myurl = new URL(httpsURL);
HttpsURLConnection con = (HttpsURLConnection)myurl.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Content-length", String.valueOf(query.length()));
con.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
con.setDoOutput(true);
con.setDoInput(true);
con.connect();
OutputStreamWriter wr = new OutputStreamWriter(con.getOutputStream());
wr.write(query);
wr.flush();
InputStream is;
if (con.getResponseCode() == 200) {
is = con.getInputStream();
} else {
is = con.getErrorStream();
}
//URLConnection con = url.openConnection();
//conn.setDoOutput(true);
// Get the response
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
String line;
while ((line = rd.readLine()) != null)
{
System.out.println("-----" + line);
}
wr.close();
rd.close();
}catch(Exception e){
e.printStackTrace();
}
在开发者控制台上,我的重定向 uri 与上面代码示例中给出的相同。
执行完这一切后,每次我得到这个:“error”:“redirect_uri_mismatch”。
这方面有很多问题,但都没有解决我的问题。
任何建议将不胜感激。提前致谢。
【问题讨论】:
标签: java oauth-2.0 google-plus