chrome.identity未在弹出窗口中显示所有已登录的Google帐户

时间:2017-06-22 06:06:27

标签: google-chrome-extension oauth google-oauth google-login google-account

我正在构建一个使用

的chrome扩展程序
chrome.identity.getAuthToken({
        interactive: true
    }, function(token) {
        if (chrome.runtime.lastError) {
            alert(chrome.runtime.lastError.message);
            return;
        }
        var x = new XMLHttpRequest();
        x.open('GET', 'https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token=' + token);
        x.onload = function() {
            alert(x.response);
        };
        x.send();
    });
用于google登录验证的background.js上的

当调用此函数时,会出现一个显示已登录谷歌帐户(如果有)的窗口,但我的问题是它只显示了一个帐户,但我在浏览器中登录了5个帐户。

我在这里错过了什么吗?

我还需要知道如何编写注销功能?

1 个答案:

答案 0 :(得分:1)

class TableViewController: UITableViewController ,UITextFieldDelegate,UIPickerViewDelegate,UIPickerViewDataSource{ @available(iOS 2.0, *) func numberOfComponents(in pickerView: UIPickerView) -> Int { return 1 } @IBOutlet var dateTextfield:UITextField! @IBOutlet var dateLabel:UILabel! var pickerDaysYear = [["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31"],["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]]; override func viewDidLoad() { super.viewDidLoad() self.pickerview.delegate = self } func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { return 2 } numberOfRowsInComponent component: Int) -> Int { return self.pickerDaysYear[component].count } func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { if(component == 0) { return self.pickerDaysYear[component][row] } else { return self.pickerDaysYear[component][row] } // return pickerDaysYear[component][row] } func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { let days = pickerDaysYear[0][pickerView.selectedRow(inComponent: 0)] let month = pickerDaysYear[1][pickerView.selectedRow(inComponent: 1)] dateTextfield.text = days + " " + month } override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) { view.endEditing(false) } 将使用chrome.identity中“已登录”的帐户。如果未登录Chrome,它会弹出一个标签,允许您“登录”Chrome,这意味着将当前个人资料与Google帐户相关联。

如果您想要显示所有简单登录的帐户,您需要手动创建一个弹出窗口(使用例如chrome://settingschrome.tabs.create并让重定向网址返回到您的服务器,然后与您的扩展程序进行通信(例如,使用window.opensendMessage),或者如果您拥有onMessageExternal权限,则可以使用tabs作为重定向网址进行重定向,这将成为oauth授权显示在urn:ietf:wg:oauth:2.0:oob:auto,您可以使用window.title权限阅读。