web-dev-qa-db-ja.com

Flutter FacebookのログインWebにログインします

私は Flutter Facebookのログイン パッケージで、Android)では正しく機能します。このパッケージを試した人がいます。ヘルプ?

6

このプラグインはWebをサポートしていません。
しかし、誰かがそれをサポートするためのコードを更新しましたromulojjunior flutter_facebook_login(Link Defunct)
[。]を使いたい場合は:

  flutter_facebook_login:
    git:
      url: [email protected]:romulojjunior/flutter_facebook_login.git
      ref: v1.3.0-web
 _

Facebook Authのた​​めに Firebase_auth を試すこともできます。

import 'Dart:html' as html;

import 'package:firebase_auth/firebase_auth.Dart';
import 'package:flutter/material.Dart';

final FirebaseAuth _auth = FirebaseAuth.instance;

void main() {
  String token;
  if (html.window.location.href.contains("access_token")) {
    String url = html.window.location.href.replaceFirst("#/", "?"); // workaround for readable redirect url
    Uri uri = Uri.parse(url);
    if (uri.queryParameters.keys.contains("access_token")) token = uri.queryParameters["access_token"];
  }

  runApp(
    MaterialApp(
        title: 'Facebook Sign In',
        home: SignIn(
          token: token,
        )),
  );
}

class SignIn extends StatefulWidget {
  final String token;

  const SignIn({Key key, this.token}) : super(key: key);

  @override
  _SignInState createState() => _SignInState();
}

class _SignInState extends State<SignIn> {
  String _message;
  final String clientId = "FBClientId";
  final String redirectUri = "http://localhost";

  @override
  void didChangeDependencies() {
    super.didChangeDependencies();
    if (widget.token != null) _signInWithFacebook(widget.token);
  }

  void _signInWithFacebook(String token) async {
    setState(() {
      _message = "Loading...";
    });
    final AuthCredential credential = FacebookAuthProvider.getCredential(
      accessToken: token,
    );
    final FirebaseUser user = (await _auth.signInWithCredential(credential)).user;
    assert(await user.getIdToken() != null);
    final FirebaseUser currentUser = await _auth.currentUser();
    assert(user.uid == currentUser.uid);
    setState(() {
      if (user != null) {
        _message = 'Successfully signed in with Facebook. ' + user?.displayName.toString();
      } else {
        _message = 'Failed to sign in with Facebook. ';
      }
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Column(
          children: <Widget>[
            Text(_message ?? "Please try to sign in"),
            RaisedButton(
              onPressed: () {
                html.window.open(
                    "https://www.facebook.com/dialog/oauth?response_type=token&scope=email,public_profile,&client_id=${clientId}&redirect_uri=${redirectUri}",
                    "_self");
              },
              child: Text('Facebook login'),
            ),
          ],
        ),
      ),
    );
  }
}

 _

Web用のFireBaseを追加することを忘れないでください: readme.md
[。] FireBaseのFacebookログインを有効にする(1~3手順を開始する前に): Firebase-Facebook

4
Nuts