我想通过Flutter创建一个Twitter条目。但是互联网上没有代码。您对此有何建议? 这些是我使用的代码。
import 'package:flutter/material.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter_auth_buttons/flutter_auth_buttons.dart';
import 'package:flutter_twitter_login/flutter_twitter_login.dart';
void main() {
runApp(MaterialApp(
home: MyMainPage(),
));
}
class MyMainPage extends StatefulWidget {
@override
_MyMainPageState createState() => _MyMainPageState();
}
class _MyMainPageState extends State<MyMainPage> {
FirebaseAuth _auth = FirebaseAuth.instance;
bool isLogged = false;
FirebaseUser myUser;
Future<FirebaseUser> _loginWithTwitter() async {
var twitterLogin = new TwitterLogin(
consumerKey: 'consumerKey',
consumerSecret: 'consumerSecret',
);
final TwitterLoginResult result = await twitterLogin.authorize();
switch (result.status) {
case TwitterLoginStatus.loggedIn:
var session = result.session;
FirebaseUser user = await _auth.signInWithTwitter(
authToken: session.token, authTokenSecret: session.secret);
return user;
break;
case TwitterLoginStatus.cancelledByUser:
debugPrint(result.status.toString());
return null;
break;
case TwitterLoginStatus.error:
debugPrint(result.errorMessage.toString());
return null;
break;
}
return null;
}
void _logOut() async {
await _auth.signOut().then((response) {
isLogged = false;
setState(() {});
});
}
void _logInTwitter() {
_loginWithTwitter().then((response) {
if (response != null) {
myUser = response;
isLogged = true;
setState(() {});
}
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(isLogged ? "Profile Page" : "Facebook Loing Example"),
actions: <Widget>[
isLogged
? IconButton(
icon: Icon(Icons.power_settings_new),
onPressed: _logOut,
)
: IconButton(
icon: Icon(Icons.remove_red_eye),
onPressed: () {},
),
],
),
body: Center(
child: isLogged
? Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Name: ' + myUser.displayName),
Image.network(myUser.photoUrl),
],
)
: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
SizedBox(height: 30.0),
TwitterSignInButton(
onPressed: _logInTwitter,
),
],
),
),
);
}
}
Future<FirebaseUser> _loginWithTwitter() async {
var twitterLogin = new TwitterLogin(
consumerKey: 'Y2MyConsumerKeyYKX',
consumerSecret: 'xYXUMyConsumerSecretKeyjFAJZMyConsumerSecretKeyS3i',
);
final TwitterLoginResult result = await twitterLogin.authorize();
switch (result.status) {
case TwitterLoginStatus.loggedIn:
var session = result.session;
FirebaseUser user = await _auth.signInWithTwitter(
authToken: session.token, authTokenSecret: session.secret);
return user;
break;
case TwitterLoginStatus.cancelledByUser:
debugPrint(result.status.toString());
return null;
break;
case TwitterLoginStatus.error:
debugPrint(result.errorMessage.toString());
return null;
break;
}
return null;
}
未为类“ FirebaseAuth”定义方法“ signInWithTwitter”。 尝试将名称更正为现有方法的名称,或定义一个名为“ signInWithTwitter”的方法。
答案 0 :(得分:0)
我认为您的FirebaseAuth插件是旧版本。我们还可以通过另一种方式进行Twitter登录 _auth.signInWithCredentials(),而您只需从 TwitterAuthProvider.getCredential()获取凭据。 这是我完成Twitter登录并获取用户数据的方法。
library(data.table)
library(magrittr)
library(ggplot2)
library(plotly)
library(lubridate)
dt <- data.table(colA = seq(from = ymd_hms("2020-01-01 00:00:00"),
to = ymd_hms("2020-01-01 00:00:00") + days(99),
by = "1 day"),
colB = runif(100,0,100),
colC = runif(100,0,100),
colD = runif(100,0,100)) %>%
melt(id.vars = "colA")
ggplot <- ggplot(data = dt) +
geom_area(aes(x = colA,
y = value,
fill = variable),
stat = "identity",
position = "stack",
alpha = 0.5) +
theme(legend.title = element_blank())
ggplot
ggplotly(ggplot)
我也建议您阅读这篇中等文章,为您social media login
提供帮助