Oauth 无效凭据错误-google userinfo api
我正在尝试通过Google UserInfo API获取用户的电子邮件地址”https://sites.google.com/site/oauthgoog/Home/emaildisplayscope" 我使用的是有效的访问令牌,但仍然收到无效的crdetial错误。 我的应用程序正在实现Oauth 1.0 API是否需要Oauth 2令牌。 如果是,获取用户电子邮件地址的其他方法是什么 这是我的密码-Oauth 无效凭据错误-google userinfo api,oauth,Oauth,我正在尝试通过Google UserInfo API获取用户的电子邮件地址”https://sites.google.com/site/oauthgoog/Home/emaildisplayscope" 我使用的是有效的访问令牌,但仍然收到无效的crdetial错误。 我的应用程序正在实现Oauth 1.0 API是否需要Oauth 2令牌。 如果是,获取用户电子邮件地址的其他方法是什么 这是我的密码- $('#GMAIL_BUTTON').click(function () {
$('#GMAIL_BUTTON').click(function () {
//oauth1 approach similar to twitter
var requestUrl = "https://www.google.com/accounts/OAuthGetRequestToken";
var authorizeUrl = "https://www.google.com/accounts/OAuthAuthorizeToken";
var accessUrl = "https://www.google.com/accounts/OAuthGetAccessToken";
var callbackUrl = "http://abcd.com/dfdf.php";
var scope = "https://mail.google.com/ https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile";
var clientID = "vfdvfdvfd";
var clientSecret = "dvdfvrevvfv-fvfdvf";
var timestamp = Math.round(new Date().getTime() / 1000.0);
var nonce = (new Date()).getTime();
var params = [];
params["oauth_callback"] = encodeURI(callbackUrl);
params["oauth_consumer_key"] = clientID;
params["oauth_timestamp"] = timestamp;
params["oauth_nonce"] = nonce;
params["oauth_signature_method"] = "HMAC-SHA1";
params["scope"] = scope;
var paramString = normalizeParams(params);
var sigBaseString = "GET&" + encodeURIComponent(requestUrl) + "&" + encodeURIComponent(paramString);
var keyText = encodeURIComponent(clientSecret) + "&";
var keyMaterial = Windows.Security.Cryptography.CryptographicBuffer.convertStringToBinary(keyText, Windows.Security.Cryptography.BinaryStringEncoding.Utf8);
var macAlgorithmProvider = Windows.Security.Cryptography.Core.MacAlgorithmProvider.openAlgorithm("HMAC_SHA1");
var key = macAlgorithmProvider.createKey(keyMaterial);
var tbs = Windows.Security.Cryptography.CryptographicBuffer.convertStringToBinary(sigBaseString, Windows.Security.Cryptography.BinaryStringEncoding.Utf8);
var signatureBuffer = Windows.Security.Cryptography.Core.CryptographicEngine.sign(key, tbs);
var signature = Windows.Security.Cryptography.CryptographicBuffer.encodeToBase64String(signatureBuffer);
paramString += "&oauth_signature=" + encodeURIComponent(signature);
requestUrl = encodeURI(requestUrl);
requestUrl += "?" + paramString;
var response = sendGetRequest(requestUrl);
//requestUrl += "?scope="+encodeURIComponent(scope);
//var response = sendGetRequest(requestUrl, dataToPost, null);
var keyValPairs = response.split("&");
var oauth_token;
var oauth_token_secret;
for (var i = 0; i < keyValPairs.length; i++) {
var splits = keyValPairs[i].split("=");
switch (splits[0]) {
case "oauth_token":
oauth_token = splits[1];
break;
case "oauth_token_secret":
oauth_token_secret = splits[1];
break;
}
}
// Send the user to authorization
authorizeUrl += "?oauth_token=" + oauth_token;
// document.getElementById("TwitterDebugArea").value += "\r\nNavigating to: " + twitterURL + "\r\n";
var startURI = new Windows.Foundation.Uri(authorizeUrl);
var endURI = new Windows.Foundation.Uri(callbackUrl);
//authzInProgress = true;
Windows.Security.Authentication.Web.WebAuthenticationBroker.authenticateAsync(
Windows.Security.Authentication.Web.WebAuthenticationOptions.none, startURI, endURI)
.done(function (result) {
var value = result.responseData;
var callbackPrefix = callbackUrl + "?";
var dataPart = value.substring(callbackPrefix.length);
var keyValPairs = dataPart.split("&");
var authorize_token;
var oauth_verifier;
for (var i = 0; i < keyValPairs.length; i++) {
var splits = keyValPairs[i].split("=");
switch (splits[0]) {
case "oauth_token":
authorize_token = splits[1];
break;
case "oauth_verifier":
oauth_verifier = splits[1];
break;
}
}
if (result.responseStatus === Windows.Security.Authentication.Web.WebAuthenticationStatus.errorHttp) {
//document.getElementById("FacebookDebugArea").value += "Error returned: " + result.responseErrorDetail + "\r\n";
}
//form the header and send the verifier in the request to accesstokenurl
var params = [];
var timestamp = Math.round(new Date().getTime() / 1000.0);
var nonce = (new Date()).getTime();
params["oauth_consumer_key"] = clientID;
params["oauth_nonce"] = nonce;
params["oauth_signature_method"] = "HMAC-SHA1";
params["oauth_timestamp"] = timestamp;
params["oauth_token"] = authorize_token;
params["oauth_verifier"] = oauth_verifier;
var paramString = normalizeParams(params);
var sigBaseString = "GET&" + rfcEncoding(accessUrl) + "&" + rfcEncoding(paramString);
var keyText = rfcEncoding(clientSecret) + "&" + rfcEncoding(oauth_token_secret);
var keyMaterial = Windows.Security.Cryptography.CryptographicBuffer.convertStringToBinary(keyText, Windows.Security.Cryptography.BinaryStringEncoding.Utf8);
var macAlgorithmProvider = Windows.Security.Cryptography.Core.MacAlgorithmProvider.openAlgorithm("HMAC_SHA1");
var key = macAlgorithmProvider.createKey(keyMaterial);
var tbs = Windows.Security.Cryptography.CryptographicBuffer.convertStringToBinary(sigBaseString, Windows.Security.Cryptography.BinaryStringEncoding.Utf8);
var signatureBuffer = Windows.Security.Cryptography.Core.CryptographicEngine.sign(key, tbs);
var signature = Windows.Security.Cryptography.CryptographicBuffer.encodeToBase64String(signatureBuffer);
paramString += "&oauth_signature=" + rfcEncoding(signature);
accessUrl = encodeURI(accessUrl);
accessUrl += "?" + paramString;
var response = sendGetRequest(accessUrl);
var tokenstartpos = response.indexOf("oauth_token") + 12;
var tokenendpos = response.indexOf("&oauth_token_secret");
var secretstartpos = tokenendpos + 20;
var token = response.substring(tokenstartpos, tokenendpos);
var secret = response.substring(secretstartpos);
var gmailinfourl = "https://www.googleapis.com/userinfo/email?access_token="+token;
WinJS.xhr({url: gmailinfourl}).done(function success(result) {
var gmail_id = JSON.parse(result.responseText).email_address;
//send data to server
//more code
});
/*
*/
}, function (err) {
WinJS.log("Error returned by WebAuth broker: " + err, "Web Authentication SDK Sample", "error");
});
});
$(“#GMAIL_按钮”)。单击(函数(){
//类似于twitter的oauth1方法
var requestUrl=”https://www.google.com/accounts/OAuthGetRequestToken";
var authorizeUrl=”https://www.google.com/accounts/OAuthAuthorizeToken";
var accessUrl=”https://www.google.com/accounts/OAuthGetAccessToken";
var callbackUrl=”http://abcd.com/dfdf.php";
变量范围=”https://mail.google.com/ https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile";
var clientID=“vfdvfd”;
var clientSecret=“dvdfvrevvv fvfdvf”;
var timestamp=Math.round(new Date().getTime()/1000.0);
var nonce=(新日期()).getTime();
var参数=[];
params[“oauth_callback”]=encodeURI(callbackUrl);
params[“oauth_consumer_key”]=clientID;
参数[“oauth_timestamp”]=时间戳;
参数[“oauth_nonce”]=nonce;
参数[“oauth_签名_方法”]=“HMAC-SHA1”;
参数[“范围”]=范围;
var paramString=normalizeParams(参数);
var sigBaseString=“GET&”+encodeURIComponent(requestUrl)+“&”+encodeURIComponent(paramString);
var keyText=encodeURIComponent(clientSecret)+“和”;
var keyMaterial=Windows.Security.Cryptography.CryptographBuffer.convertStringToBinary(keyText,Windows.Security.Cryptography.BinaryStringEncoding.Utf8);
var macAlgorithmProvider=Windows.Security.Cryptography.Core.macAlgorithmProvider.openAlgorithm(“HMAC_SHA1”);
var key=macAlgorithmProvider.createKey(keyMaterial);
var tbs=Windows.Security.Cryptography.cryptographybuffer.convertStringToBinary(sigBaseString,Windows.Security.Cryptography.BinaryStringEncoding.Utf8);
var signatureBuffer=Windows.Security.Cryptography.Core.cryptographyingine.sign(key,tbs);
var signature=Windows.Security.cryptographicsbuffer.encodeToBase64String(signatureBuffer);
paramString+=”&oauth_signature=“+encodeURIComponent(signature);
requestUrl=encodeURI(requestUrl);
requestUrl+=“?”+参数字符串;
var response=sendGetRequest(requestUrl);
//requestUrl+=“?scope=“+encodeURIComponent(scope);
//var response=sendGetRequest(requestUrl,dataToPost,null);
var keyValPairs=response.split(“&”);
var oauth_令牌;
var oauth_token_secret;
对于(var i=0;ihttps://www.googleapis.com/auth/userinfo.email
GET /userinfo/email?access_token=...
GET /userinfo/email?oauth_consumer_key={CONSUMER_KEY}
&oauth_nonce={NONCE}
&oauth_signature={SIGNATURE}
&oauth_signature_method={SIGNATURE_METHOD}
&oauth_timestamp={TIMESTAMP}
&oauth_token={YOUR_TOKEN}
&oauth_version=1.0
GET /userinfo/email
[...]
Authorization: OAuth oauth_consumer_key="{CONSUMER_KEY}",
oauth_nonce="{NONCE}",
oauth_signature="{SIGNATURE}",
oauth_signature_method="{SIGNATURE_METHOD}",
oauth_timestamp="{TIMESTAMP}",
oauth_token="{YOUR_TOKEN}",
oauth_version="1.0"