Google API"未经身份验证使用限制的每日限制" 403错误... iOS

时间:2017-03-21 18:13:58

标签: swift google-api httprequest google-calendar-api alamofire

我是iOS开发人员和使用Google的API的完全初学者。我同时学习它们,所以如果这是一个新手问题我会道歉。

解析错误已被"废除&替换"新的API错误低于

我正在尝试编写一个应用程序,告诉我,在API请求时,日历是否处于事件的中间。

我尝试在类似问题上发布此answer

我的代码现在看起来像这样:(查看底部更新)

let json = "{ \"timeMin\": \(currentDate), \"timeMax\": \(currentDate)}"
urlString = "https://www.googleapis.com/calendar/v3/freeBusy"


let url = URL(string: urlString)!
let jsonData = json.data(using: .utf8, allowLossyConversion: false)!

var request = URLRequest(url: url)
request.httpMethod = HTTPMethod.post.rawValue
request.setValue("application/json; charset=UTF-8", forHTTPHeaderField: "Content-Type")
request.httpBody = jsonData

Alamofire.request(request).responseJSON {
    (response) in
    print (response)
    }

我得到以下输出: (注意:这是通过在json参数中指定要从中检索信息的日历来修复的)

SUCCESS: {
    error =     {
        code = 400;
        errors =         (
                        {
                domain = global;
                message = "Parse Error";
                reason = parseError;
            }
        );
        message = "Parse Error";
    };
}

我不确定如何从这里继续 - 也是,即使是解决问题的最佳方式,也要提出免费的POST请求吗?

更新

所以我认识到在我的body参数中,我没有指定从哪个日历请求信息:我做了以下调整:

    var body : Parameters  = [
    "timeMin": dateString,
    "timeMax": dateString,
    "items": [
        [
            "id": CALENDAR_ID
        ]]
    ]

    Alamofire.request(url, method: HTTPMethod.post, parameters: body, encoding: JSONEncoding.default).responseJSON {
            (response) in
                print(response)
    }
}

但是,现在我收到以下错误:

SUCCESS: {
    error =     {
        code = 403;
        errors =         (
                        {
                domain = usageLimits;
                extendedHelp = "https://code.google.com/apis/console";
                message = "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.";
                reason = dailyLimitExceededUnreg;
            }
        );
        message = "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.";
    };
}

1 个答案:

答案 0 :(得分:2)

所以我想出了两个问题:

FIRST-PARSE ERROR

这个错误,在freebusy的上下文来自我的POST参数而不是指定从哪个日历中检索信息

解决方案:(关键部分加粗)

var body : Parameters  = [
    "timeMin": dateString,
    "timeMax": dateString,
    "items": [                //make sure you have this (plus next 4 lines)
        [
           "id": CALENDAR_ID
        ]
    ]
]

第二次未使用的使用限制错误

我在this question的帮助下解决了这个问题。

  

简而言之,所有基于发现的API都需要您的呼叫   被确定。你得到的错误是我经常看到的错误   Google API无法识别您的应用。你通常可以做一些   身份不明的电话,但你几乎肯定会遇到   非常低的“不明身份”配额很快。你也可以   使用OAuth(可识别您的应用)进行身份验证,也可以指定   API密钥(用于标识您的应用)或您可以同时执行这两项操作。

<强>解

我通过将API密钥附加到我的URL来解决这个问题,如下所示(不要点击):

  

https://www.googleapis.com/calendar/v3/freeBusy ?键= PASTEKEYHERE