2013-06-26 146 views
1

我一直在使用谷歌+ API的C#在我的桌面应用程序。我必须访问google +用户的朋友列表。获取访问令牌为谷歌+请求的权限

我一直通过从浏览器标题中提取访问令牌。

它适用于以下权限(全部分组并在同一时间询问)并返回浏览器标题(成功= authcode)中的验证码。

    "https://www.googleapis.com/auth/plus.me 
       "https://www.googleapis.com/auth/youtube", 
       "https://www.googleapis.com/auth/youtube.upload" 

但是,当我改变了许可,获得好友列表,

    "https://www.googleapis.com/auth/plus.login 

它没有返回所需的授权码,它只是返回成功AUTHUSER = 0 & PROMT ...

顺便说一下,我不能在本地Web服务器上收听。 如何使用上述权限获取访问令牌?

+0

Hi..Actually返回在标题栏中的身份验证代码,但格式会发生变化。正常情况下,它会返回“Success = Authcode”,但对于上述权限,它返回 “Success authuser = 0&prompt = consent&session_state = 96d1b8d6c0d5d49b4e5404e4bfac620f0265c016..acb1&code = AuthCode”,因此它不可见在标题栏中。现在我可以提取来自标题的验证码.. – Naren

回答

2

我刚刚检查了这一点,并且在使用plus.login作用域时,窗口标题中的成功字符串实际上是不同的。虽然在字符串中返回的代码仍然有效。下面的代码显示,你可以提取从窗口标题字符串的授权码的一种方法:

string pollActiveWindowForAuthCode(int sleepTime){ 
     string activeTitle = GetActiveWindowTitle(); 
     while (!activeTitle.StartsWith("Success")) 
     { 
      activeTitle = GetActiveWindowTitle(); 
      Thread.Sleep(sleepTime); 
     } 
     // strip to start of auth code 
     string trimToAuthCode = activeTitle.Substring(activeTitle.LastIndexOf("=") + 1); 
     // trim the " - Google Chrome" text 
     return trimToAuthCode.Substring(0, trimToAuthCode.IndexOf(' ')); 
    } 

我已经上传了更全面的演示,我的GitHub:

csharp-gplus-wpf

+0

谢谢@class !!此代码的作用就像一个魅力,我能够检索验证代码.. – Naren

相关问题