0
我有一個Google+應用是成功編寫的應用程序的活動對於某些測試帳戶,還有一些返回一個401未經授權錯誤:Google+的CreateActivity返回「401未授權」的某些帳戶
{
"error": {
"errors": [
{
"domain": "global",
"reason": "unauthorized",
"message": "Unauthorized"
}
],
"code": 401,
"message": "Unauthorized"
}
}
我也注意到了這一點在響應頭:
WWW-AuthenticateBearer realm="https://www.google.com/accounts/AuthSubRequest", error=invalid_token
這似乎表明一個無效的道理,但我不知道我怎麼使用gapi.auth.authorize錯誤......特別是因爲劇本的作品完美使用某些測試帳戶,並寫入時刻G +沒有問題。如果任何人可以提出任何理由,某些測試賬戶可能無法通過編寫應用程序活動進行身份驗證(或下面的代碼有任何問題),請讓我知道!
// first call gapi.auth.authorize with immediate:true:
_checkAuth = function _checkAuth(){
gapi.auth.authorize({
client_id : 'XXXXXXXXXXXXXXXXXXXXXXXXXX.apps.googleusercontent.com',
scope : 'https://www.googleapis.com/auth/plus.login',
request_visible_actions : 'http://schemas.google.com/CreateActivity',
immediate : true
}, function(authResult){
if(!authResult || authResult.error){
_signIn();
}else{
_performAction();
}
});
},
// if not logged in, call gapi.auth.authorize with immediate:false:
_signIn = function _signIn(){
gapi.auth.authorize({
client_id : 'XXXXXXXXXXXXXXXXXXXXXXXXXX.apps.googleusercontent.com',
scope : 'https://www.googleapis.com/auth/plus.login',
request_visible_actions : 'http://schemas.google.com/CreateActivity',
immediate : false
}, function(token){
gapi.auth.setToken(token);
_performAction();
});
},
// create activity
_performAction = function _performAction(){
gapi.client.load('plus','v1', function(){
gapi.client.setApiKey('XXXXXXXXXXXXXXXXXXXXXXX');
var payload = {
"type" : 'http://schemas.google.com/CreateActivity'
};
payload.target = {
"id" : "myappid",
"image" : "http://www.example.com/xxxxxxxxxxx.jpg",
"type" : 'http://schema.org/CreativeWork',
"description" : "description of activity",
"name" : "name of activity"
};
var args = {
'path' : '/plus/v1/people/me/moments/vault',
'method' : 'POST',
'body' : JSON.stringify(payload),
'callback' : function(response) {
console.log(response); // error
}
};
// triggers 401 error for some accounts
gapi.client.request(args);
});
},
非常感謝您的回覆。你的演示與我遇到的測試帳戶一起工作,它沒有任何問題寫入應用程序活動......但是,接下來我將源代碼複製到我的環境中,並更改了client_id和有效內容目標ID,並且再次得到401錯誤。我正在開發人員控制檯中查看,並且所有內容似乎都已正確設置(Javascript起源等),但我想知道是否需要調整某個設置。 –
您正在使用的所有操作都設置在request_visible_actions中?我在答案中給出了一個示例按鈕 - 您將知道您正確設置了它們,因爲活動類型將出現在同意對話框中。 – class
@class什麼是你用「替換」來替換「replacewithuniqueidforaddtarget」。你從哪裏得到這些信息? – Supertecnoboff