我使用Axios对twitter API进行HTTPS调用,并返回令牌和tweet:
TwitterScreen.js:
export default class TwitterLogin extends React.Component {
async componentDidMount(){
await init("<CUSTOMER KEY>", "<CUSTOMER SECRET KEY>");
this.twitter = await getToken();
alert(this.twitter);
render() {
return(
<View style= {styles.container}>
<Button
title="Twitter Login Button" onPress={this.twitter)}
</View>
}
AxiosUtility.js:
export function init(cuskey, seckey){
axios.defaults.baseURL = 'https://api.twitter.com';
//TODO: RFC 1738 this.
axios.defaults.headers.common['Authorization'] = 'Basic ' + btoa(cuskey + ':' + seckey);
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
axios.defaults.headers.post['Accept-Encoding'] = 'gzip';
export function getToken(){
axios.post('/oauth2/token', 'grant_type=client_credentials', {
'User-Agent' : 'whereabouts dev',
Accept: '*/*',
.then((response) => {
console.log(response.data);
return (response.data);
.catch((error) =>{
console.log(error)
}
当console.log(response.data)运行时,它返回一条成功的消息。但它在向应用程序发送警报消息后运行,这意味着警报消息显示为“未定义”。我按照文档操作,但无济于事。
我还收到一条警告,说"await对此表达式的类型没有影响“。如何正确使用await和async,以便在调用twitter后发出警报?
发布于 2019-10-02 02:51:46
我认为getToken必须兑现诺言。
export function getToken(){
//do not return void but promise with return
return axios.post('/oauth2/token', 'grant_type=client_credentials', {
'User-Agent' : 'whereabouts dev',
Accept: '*/*',
}).then((response) => {
console.log(response.data);
return (response.data);