1

私は OAuth Arena と Google Api に非常に慣れていませんが、ここで達成しようとしていることは非常に単純です。

ユーザーが Google Connect ボタンをクリックすると、私の Web サービスは Google サーバーからすべてのユーザー プロファイル情報を取得できるはずです。

AccessToken を取得するためのコードを既に作成していますが (まだテストしていません)、それが正常に機能していると仮定すると、Google API にユーザー プロファイルを提供するようにどのように依頼すればよいでしょうか? GoogleConsumer クラスに Get Contacts という静的関数が表示されますが、プロファイルデータを取得するオプションが表示されません。私が見逃しているものがあるかもしれませんか?

アクセストークンを取得しているコードを次に示します。

IConsumerTokenManager tokenManager = 
                              new LocalTokenManager(consumerKey,consumerSecret);
var googleConsumer = 
               new WebConsumer(GoogleConsumer.ServiceDescription, tokenManager);
var tokenResult = googleConsumer.ProcessUserAuthorization();
return tokenResult.AccessToken;

では、ユーザー プロファイルを取得するにはどうすればよいでしょうか。

4

2 に答える 2

2

Access_Token を取得したら (アクセス タイプはオフラインで、ユーザー情報を取得できるように範囲/権限が設定されています)、次のことを試すことができます (テストされていません。エラーが発生した場合はお知らせください)。

string userInfo = "";

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(action);
        HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
        StreamReader sr = new StreamReader(resp.GetResponseStream());
        userInfo = "https://www.googleapis.com/oauth2/v1/userinfo?access_token=" + "YOUR_ACCESSTOKEN";
        sr.Close();

            JObject jsonResp = JObject.Parse(userInfo);
            string info="";
            info += "<h3>" + jsonResp.Root["name"] + "</h3>";
            info += "<img src='" + jsonResp.Root["picture"] + "' width='120'/><br/>";
            info += "<br/>ID : " + jsonResp.Root["id"];
            info += "<br/>Email : " + jsonResp.Root["email"];
            info += "<br/>Verified_email : " + jsonResp.Root["verified_email"];
            info += "<br/>Given_name : " + jsonResp.Root["given_name"];
            info += "<br/>Family_name : " + jsonResp.Root["family_name"];
            info += "<br/>Link : " + jsonResp.Root["link"];
            info += "<br/>Gender : " + jsonResp.Root["gender"];

Response.Write(info);

フロー: アクセス トークンで google userinfo url を要求し、応答を取得して情報を表示します。

于 2012-04-19T12:55:41.367 に答える
1

https://developers.google.com/+/api/latest/people/getで説明されている GET メソッドを使用してプロファイルの Google 情報にアクセスすることについてどう思いますか? これは私の C# の例です。

string urlGoogle = "https://www.googleapis.com/plus/v1/people/me";
HttpWebRequest client = HttpWebRequest.Create(urlGoogle) as HttpWebRequest;
client.Method = "GET";
client.Headers.Add("Authorization", "Bearer " + accessToken);
            
using (HttpWebResponse response = (HttpWebResponse)client.GetResponse())
{
     using (Stream dataStream = response.GetResponseStream())
     {
           using (StreamReader reader = new StreamReader(dataStream))
           {
                 if (response.StatusCode == HttpStatusCode.OK)
                 {
                     var json = new JavaScriptSerializer();
                     var data = json.Deserialize<IDictionary<string, object>>(reader.ReadToEnd());
    //....... here in data you have all json fields for the profile

于 2014-12-13T14:44:15.220 に答える