1

我一直在我的桌面应用程序中使用 google+ APIs for 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 服务器上收听。如何使用上述权限获取访问令牌?

4

1 回答 1

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

于 2013-06-28T00:29:45.510 回答