
Research
Security News
Lazarus Strikes npm Again with New Wave of Malicious Packages
The Socket Research Team has discovered six new malicious npm packages linked to North Korea’s Lazarus Group, designed to steal credentials and deploy backdoors.
react-native-simple-twitter
Advanced tools
Twitter API client for React Native.
This client not use NativeModule, only pure javascript.
So this don't use react-native link
and Expo can also easily use twitter API without auth0 and server.
And also offer login button,so that is easily login twitter.
Button is customizable, and including login webview.
Checkout Usage.
npm install react-native-simple-twitter --save
import React from 'react'
import {
View,
Text,
StyleSheet
} from 'react-native'
import { NavigationActions } from 'react-navigation'
import { connect } from 'react-redux'
import { Constants } from 'expo'
/* other */
import twitter, { TWLoginButton } from '../../util/twitter'
@connect(
state => ({
user:state.user
})
)
export default class LoginScreen extends React.Component {
static navigationOptions = ({ navigation }) => {
const { state, setParams } = navigation
const { params = {} } = navigation.state
return {
header: null
}
}
constructor(props) {
super(props)
this.state = {
isVisible: false,
authUrl: null
}
}
componentWillMount() {
if (this.props.user.token) {
twitter.setAccessToken(this.props.user.token, this.props.user.token_secret)
try {
const user = await twitter.get("account/verify_credentials.json", { include_entities: false, skip_status: true, include_email: true })
this.props.dispatch({ type: "USER_SET", user: user })
this.props.dispatch(NavigationActions.reset({
index: 0,
actions: [
NavigationActions.navigate({ routeName: 'Home' })
]
}))
} catch (err) {
console.log(err)
}
}
}
onGetAccessToken = ({ oauth_token, oauth_token_secret }) => {
this.props.dispatch({ type: "TOKEN_SET", token: oauth_token, token_secret: oauth_token_secret })
}
onSuccess = (user) => {
this.props.dispatch({ type: "USER_SET", user: user })
}
onClose = (e) => {
console.log("press close button")
}
onError = (err) => {
console.log(err)
}
render() {
return (
<View style={styles.container}>
<View style={styles.title}>
<Text style={styles.titleText}>Login</Text>
</View>
<TWLoginButton headerColor={Constants.manifest.primaryColor}
containerStyle={styles.loginContainer}
style={styles.loginButton}
textStyle={styles.loginButtonText}
onGetAccessToken={this.onGetAccessToken}
onSuccess={this.onSuccess}
closeText="閉じる"
closeTextStyle={styles.loginCloseText}
onClose={this.onClose}
onError={this.onError}>Twitter IDではじめる</TWLoginButton>
</View>
)
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: Constants.manifest.primaryColor
},
title: {
flex: 1,
padding: 64
},
titleText: {
textAlign: "center",
fontSize: 24,
color: "#fff",
fontWeight: "bold"
},
loginContainer: {
paddingHorizontal: 32,
marginBottom: 64,
backgroundColor: "transparent"
},
loginButton: {
backgroundColor: "#fff",
paddingVertical: 16,
borderRadius: 64,
overflow: "hidden"
},
loginButtonText: {
color: Constants.manifest.primaryColor,
fontSize: 16,
fontWeight: "bold",
textAlign: "center"
},
loginCloseText: {
color: "#fff",
fontWeight: "bold"
}
})
Checkout example.
Name | Type | Default | Description |
---|---|---|---|
children | string | 'Login with Twitter' | Login button text |
callbackUrl | string | null | Twitter application callback url |
style | any | null | Login button style |
containerStyle | any | null | Login button's container style |
textStyle | any | null | Login button's text style |
headerColor | string | '#efefef' | Webview's modal and SafeAreaView backgroundColor |
headerStyle | any | null | Webview's header style |
closeStyle | any | null | Webview close button style |
closeText | string | 'close' | Webview close button text |
closeTextStyle | any | null | Webview close button text style |
onGetAccessToken | func | ({oauth_token,oauth_token_secret}) => {} | Called when get access token |
onClose | func | () => {} | Called when press close button |
onSuccess | func | (user) => {} | Called when logged in and get user account |
onError | func | (e) => {} | Called when on error |
twitter.setConsumerKey(consumer_key,consumer_key_secret)
- set application key and secret.twitter.setAccessToken(access_token,access_token_secret)
- set user access_token and access_token_secret, when you already have access_token and access_token_secret.twitter.getLoginUrl(callback_url)
- get login url for authorize app.twitter.getAccessToken(oauth_verifier)
- get access_token and access_token_secret, when user logged in app.twitter.api(method,endpoint,parameters)
- call twitter api.twitter.get(endpoint,parameters)
- call twitter get api.twitter.post(endpoint,parameters)
- call twitter post api.FAQs
Twitter API client for React Native without react-native link
The npm package react-native-simple-twitter receives a total of 68 weekly downloads. As such, react-native-simple-twitter popularity was classified as not popular.
We found that react-native-simple-twitter demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
The Socket Research Team has discovered six new malicious npm packages linked to North Korea’s Lazarus Group, designed to steal credentials and deploy backdoors.
Security News
Socket CEO Feross Aboukhadijeh discusses the open web, open source security, and how Socket tackles software supply chain attacks on The Pair Program podcast.
Security News
Opengrep continues building momentum with the alpha release of its Playground tool, demonstrating the project's rapid evolution just two months after its initial launch.