en xcode si je crée un J'ai téléchargé le SDK Facebook via Cocoapodes et sa première fois de travailler avec elle, donc je suis confus à ce sujet. Merci pour l'aide! P> uiview code>, puis ajoutez la classe personnalisée comme
fbsdkloginbutton code>, lorsque je clique, cela me conduit à travers le login Facebook, puis me renvoie à la même chose. Page Comme le
fbsdkloginbutton code> mais au lieu de dire un bouton de connexion, il est indiqué déconnecter maintenant. Comment puis-je continuer à faire que lorsque le bouton de connexion est cliqué, il conduit à une nouvelle vue? P>
5 Réponses :
Une option serait de définir votre contrôleur d'affichage en tant que délégué du fbsdkloginbutton code> et implémentez le
loginbutton: DIDCompletewithResulthResult: Erreur: code>
méthode, qui est appelé lorsque le bouton est utilisé pour vous connecter. // ViewController.m
@implementation ViewController
- (void)loginButton:(FBSDKLoginButton *)loginButton
didCompleteWithResult:(FBSDKLoginManagerLoginResult *)result
error:(NSError *)error {
if (error) {
// Process error
}
else if (result.isCancelled) {
// Handle cancellations
}
else {
// Navigate to other view
}
}
Vous pouvez le faire comme ce tutoriel de appcoda (voir Code ci-dessous) voici un App pour cela. P> p>
Cela me suis venu dans une file d'attente de révision car elle a été marquée comme une réponse de liaison uniquement, qui ne sont généralement pas considérées comme bonnes ici. Je peux voir que vous avez répondu au commentaire uniquement sur le lien Seulement des réponses. J'ai édité pour ranger un peu de formatage / fautes de frappe.
à Swift ce serait quelque chose comme: puis dans votre fichier cibleviewController Ajouter une fonction de déroulement: P> @IBAction func unwindToViewOtherController(segue:UIStoryboardSegue) {
}
Merci Bud .. Un extrait de ce qui s'est avéré pratique!
SacsfactSeDIdentifier ("UndindtoViewotherController", Sender: Self) Code> Intérieur
Si (fbsdkaccessToken.CurrentAccessToken ()! = nil) code> ne loge pas la page Viewstroller. Voudrais-tu m'aider avec ça ??
Dans le storyboard, sélectionnez la SEGUE de dérivation, puis l'inspecteur des attributs. Là, vous devriez avoir UnwindtoViewotherController code> comme Identificateur B> et
UndindToViewotherController: code> comme action b>.
Je devais ajouter viewDidAppear code> fonction et écrire
exécuterSegueilwithIdentifier code> dedans. Qui a résolu le problème. Nous ne pouvons pas avoir
SacsfinierWithIdidIdentifier CODE> INTÉRIEUR
VIEWDIDLOAD CODE> Fonction, c'est ce que j'ai appris de Google. Voulez-vous s'il vous plaît m'aidez-vous à savoir pourquoi?
Vous ne pouvez pas rejeter une vue qui n'a pas encore été chargée. ViewDiDload code> Ce n'est pas une fois que cette fonction est terminée que la vue est présentée et peut donc être rejetée.
dans la version actuelle FacebookLogin (0.2.0) Pour SWIFT, la propriété de déléguée de Loginbutton est définie comme une propriété forte: Si vous ajoutez le bouton de connexion suivi des instructions de Facebook et vous définissez votre UIViewController Code> Classe enfant en tant que bouton Déléguer ... P>
import UIKit
import FacebookCore
import FacebookLogin
import RxSwift
class LoginViewController: UIViewController, LoginButtonDelegate {
private weak var facebookLoginButton: LoginButton? = nil
override func viewDidLoad() {
super.viewDidLoad()
// Add the Facebook login button
let loginButton = LoginButton(readPermissions: [ .publicProfile, .email, .userFriends ])
loginButton.center = view.center
// WARNING!: Facebook login button delegate property is defined currently as STRONG.
// Therefore, it must be set to nil before leaving the view to avoid reference cycles
loginButton.delegate = self
view.addSubview(loginButton)
// Store the login button as a weak reference, since it is holded by the main view with a
// strong reference
facebookLoginButton = loginButton
}
override func willMove(toParentViewController parent: UIViewController?) {
super.willMove(toParentViewController:parent)
if parent == nil {
// The back button was pressed, interactive gesture used, or programatically pop view
// was executed
// Do not forget to set delegate in Facebook button to nil to break reference cycle.
facebookLoginButton?.delegate = nil
}
}
// MARK: - Facebook login
/**
Called when the button was used to login and the process finished.
- parameter loginButton: Button that was used to login.
- parameter result: The result of the login.
*/
func loginButtonDidCompleteLogin(_ loginButton: LoginButton, result: LoginResult) {
switch result {
case .failed(let error):
// Action on failed
case .cancelled:
// Action on cancelled
case .success(let grantedPermissions, let declinedPermissions, let accessToken):
// Action on success
}
}
/**
Called when the button was used to logout.
- parameter loginButton: Button that was used to logout.
*/
func loginButtonDidLogOut(_ loginButton: LoginButton) {
// Action on logout
}
}
Si vous laissez tomber les lignes disant «c'est un commentaire» ... cela ressemblerait à une réponse à moi ;-)
iOS 13 Utilisez un délégué de scène. Il suffit de coller le code ci-dessous dans la scène déléguée et appelez simple le gestionnaire de connexion Facebook. Il retournera l'objet utilisateur de Facebook. Cette fonction appelle automatiquement.
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) { guard let url = URLContexts.first?.url else { return } let _ = ApplicationDelegate.shared.application( UIApplication.shared, open: url, sourceApplication: nil, annotation: [UIApplication.OpenURLOptionsKey.annotation]) }
Vous devriez vérifier le succès-Callback (c'est-à-dire connecté = succès) dans la vue. Si vous êtes connecté, vous pouvez «rediriger» à une autre vue.
Cela pourrait être une question stupide mais comment puis-je faire cela car il n'y a pas de code réel dans le contrôleur d'affichage?