我正在嘗試使用dotnet-client在Google+中編寫活動。問題是,我似乎無法正確地獲得我的客戶端應用程序的配置。根據Google+ Sign-In configuration和this SO question,我們需要添加requestvisibleactions參數。我做到了,但沒有奏效。我正在使用範圍https://www.googleapis.com/auth/plus.login
,我甚至添加了範圍https://www.googleapis.com/auth/plus.moments.write
,但插入仍然無效。Google+插入時刻使用google-api-dotnet-client
這是我的請求的URL是什麼樣子:
https://accounts.google.com/ServiceLogin?service=lso&passive=1209600&continue=https://accounts.google.com/o/oauth2/auth?scope%3Dhttps://www.googleapis.com/auth/plus.login%2Bhttps://www.googleapis.com/auth/plus.moments.write%26response_type%3Dcode%26redirect_uri%3Dhttp://localhost/%26state%3D%26requestvisibleactions%3Dhttp://schemas.google.com/AddActivity%26client_id%3D000.apps.googleusercontent.com%26request_visible_actions%3Dhttp://schemas.google.com/AddActivity%26hl%3Den%26from_login%3D1%26as%3D-1fbe06f1c6120f4d<mpl=popup&shdf=Cm4LEhF0aGlyZFBhcnR5TG9nb1VybBoADAsSFXRoaXJkUGFydHlEaXNwbGF5TmFtZRoHQ2hpa3V0bwwLEgZkb21haW4aB0NoaWt1dG8MCxIVdGhpcmRQYXJ0eURpc3BsYXlUeXBlGgdERUZBVUxUDBIDbHNvIhTeWybcoJ9pXSeN2t-k8A4SUbfhsygBMhQivAmfNSs_LkjXXZ7bPxilXgjMsQ&scc=1
你可以從這裏看到,有一個request_visible_actions
,我甚至增加了一個有沒有底線的情況下,我得到的參數錯誤( requestvisibleactions
)。
讓我說,我的應用程序正在通過API成功驗證。我可以在通過身份驗證後獲取用戶的個人資料,並且它位於我的應用失敗的「插入時刻」部分。我的插入代碼:
var body = new Moment();
var target = new ItemScope();
target.Id = referenceId;
target.Image = image;
target.Type = "http://schemas.google.com/AddActivity";
target.Description = description;
target.Name = caption;
body.Target = target;
body.Type = "http://schemas.google.com/AddActivity";
var insert =
new MomentsResource.InsertRequest(
// this is a valid service instance as I am using this to query the user's profile
_plusService,
body,
id,
MomentsResource.Collection.Vault);
Moment result = null;
try
{
result = insert.Fetch();
}
catch (ThreadAbortException)
{
// User was not yet authenticated and is being forwarded to the authorization page.
throw;
}
catch (Google.GoogleApiRequestException requestEx)
{
// here I get a 401 Unauthorized error
}
catch (Exception ex)
{
} `
您是否使用了頁面上的Google+登錄按鈕?如果是這樣,你可以將該標記粘貼到你的文章中?或者您是否使用原生OAuth來觸發您顯示的網址?我相信,從URL的形成方式來看,您並未使用該按鈕來觸發身份驗證,是否有原因? – BrettJ 2013-03-07 15:25:45
我正在使用dotnet客戶端。我展示的URL是由API構建的。我知道dotnet客戶端使用DotNetOpenAuth(DNOA),所以我認爲這是建立URL的DNOA。身份驗證通過'Google.Apis.Authentication.OAuth2.OAuth2Authenticator'完成。 – 2013-03-08 04:22:44
哦,對不起,我錯過了回答你的一個問題。我使用我自己的鏈接/按鈕,在那裏我調用一個啓動身份驗證的方法。我的驗證碼基於樣本。如果需要,我也可以發佈它。 – 2013-03-08 04:39:59