【发布时间】:2018-03-21 21:46:33
【问题描述】:
我是 React 和 RN 的新手。我已经研究了这里的每一个解决方案,但我没有找到适合我的案例的解决方案。我正在尝试从日历 v3 api 中提取谷歌日历事件。到目前为止,我已经尝试了两种方法。我不知道哪个是正确的,但我没有得到任何一个正确的结果。首先,我尝试向https://www.googleapis.com/calendar/v3/calendars/${CALENDAR_ID}/events?key=${API_KEY}( 我不知道是否需要 key 参数。我认为我们应该删除前面的 key 参数api 密钥。我这样做是因为否则它会给出一个错误,因为找不到全局。
这是 calendar.js
const CALENDAR_ID = 'public@qeqw'
const API_KEY = 'key'
let url = `https://www.googleapis.com/calendar/v3/calendars/${CALENDAR_ID}/events?key=${API_KEY}`
export function getEvents (callback) {
request
.get(url)
.end((err, resp) => {
if (!err) {
const events = []
JSON.parse(resp.text).items.map((event) => {
events.push({
start: event.start.date || event.start.dateTime,
end: event.end.date || event.end.dateTime,
title: event.summary,
})
})
callback(events)
}
})
}
这是 app.js
import React from 'react'
import { render } from 'react-dom'
import { getEvents } from './gcal'
import { View, Text,
StatusBar,Image,AppRegistry,ScrollView,StyleSheet,Platform,FlatList} from
'react-native'
class App extends React.Component {
constructor () {
super()
this.state = {
events: []
}
}
componentDidMount () {
getEvents((events) => {
this.setState({events})
})
}
render () {
return (
// React Components in JSX look like HTML tags
<View>
<Text>{this.state.events}</Text>
</View>
)
}
}
但是,我在下面遇到了错误。我不知道我做错了什么,但应该可以发送这样的请求。我唯一担心的是,如果我需要通过使用 OAuth2 身份验证提供我的客户信息来获取令牌。我是否需要注册并获取令牌才能访问 API?如果我需要这样做,我已经通过阅读此处的示例在节点 js 中实现了它。https://developers.google.com/calendar/quickstart/nodejs 但是有一些节点模块我不能在我的 React 本机应用程序中使用它们,如 fs、googleAuth、readline 等。 . 其中一些可以通过使用 nodeify 来完成,但其他一些会抛出错误。所以,从现在开始,我不知道该怎么办。如果有人可以指导我如何在反应中使用谷歌日历 api,我将不胜感激。感谢所有在这里做出贡献的人。
{
"error": {
"errors": [
{
"domain": "usageLimits",
"reason": "dailyLimitExceededUnreg",
"message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.",
"extendedHelp": "https://code.google.com/apis/console"
}
],
"code": 403,
"message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup."
}
}
【问题讨论】:
标签: reactjs events react-native google-calendar-api