对于想了解如何更改FBSDKLoginButtoniOS8.3/Swift1.2的默认设计?的读者,本文将是一篇不可错过的文章,我们将详细介绍fblocationabove4g设置,并且为您提供关于A
对于想了解如何更改FBSDKLoginButton iOS 8.3 / Swift 1.2的默认设计?的读者,本文将是一篇不可错过的文章,我们将详细介绍fb location above 4g设置,并且为您提供关于Android的默认样式(特别是ButtonBar和ButtonBar.Button)是如何呈现的?、com.facebook.login.widget.LoginButton的实例源码、FBSDKLoginManager.loginWithReadPermissions不在iOS上调用处理程序、Flutter Web-悬停时如何更改Flatbutton TEXT颜色的有价值信息。
本文目录一览:- 如何更改FBSDKLoginButton iOS 8.3 / Swift 1.2的默认设计?(fb location above 4g设置)
- Android的默认样式(特别是ButtonBar和ButtonBar.Button)是如何呈现的?
- com.facebook.login.widget.LoginButton的实例源码
- FBSDKLoginManager.loginWithReadPermissions不在iOS上调用处理程序
- Flutter Web-悬停时如何更改Flatbutton TEXT颜色
如何更改FBSDKLoginButton iOS 8.3 / Swift 1.2的默认设计?(fb location above 4g设置)
我目前正在开发App,我需要更改Facebook
SDK提供的Facebook按钮的默认设计。我成功地使提供的按钮透明,并将其粘贴在设计视图上方,并且效果很好(现在设计已经匹配,Facebook
SDK按钮的功能也很好)。我这样做之后出现了问题,因为按钮丢失了它的Ui效果(单击时未突出显示)。如果有人可以帮助我,请给此设计的按钮添加突出显示效果。让我们澄清一下:我已经将UIView设计为按钮,在其上面放置了一个透明的Facebook
SDK按钮,结果是我的设计形状和Facebook按钮的功能同时出现,但失去了:单击时没有突出显示效果。
答案1
小编典典我尝试了以下代码,它以正确的方式提供了功能。但是,单击按钮后,我未能给按钮赋予突出显示效果。这是代码:
{ if (FBSDKAccessToken.currentAccessToken() != nil) { // if user logged in then handleTap func will run instead of button functionality let tap = UITapGestureRecognizer(target: self, action: "handleTap:") self.btnSignUpwithFaceBook.addGestureRecognizer(tap) } else { let loginView : FBSDKLoginButton = FBSDKLoginButton() self.view.addSubview(loginView) loginView.center = self.btnSignUpwithFaceBook.center loginView.frame.size.width = self.btnSignUpwithFaceBook.frame.width loginView.frame.size.height = self.btnSignUpwithFaceBook.frame.height loginView.frame.origin.x = self.btnSignUpwithFaceBook.frame.origin.x loginView.frame.origin.y = self.btnSignUpwithFaceBook.frame.origin.y for subView in loginView.subviews { subView.removeFromSuperview() } loginView.layer.shadowColor = UIColor.clearColor().CGColor loginView.setBackgroundImage(nil, forState: UIControlState.Normal) loginView.setBackgroundImage(nil, forState: UIControlState.Application) loginView.setBackgroundImage(nil, forState: UIControlState.allZeros) loginView.setBackgroundImage(nil, forState: UIControlState.Highlighted) loginView.setBackgroundImage(nil, forState: UIControlState.Reserved) loginView.setBackgroundImage(nil, forState: UIControlState.Selected) loginView.setImage(nil, forState: UIControlState.Normal) loginView.setImage(nil, forState: UIControlState.Application) loginView.setImage(nil, forState: UIControlState.allZeros) loginView.setImage(nil, forState: UIControlState.Highlighted) loginView.setImage(nil, forState: UIControlState.Reserved) loginView.setImage(nil, forState: UIControlState.Selected) loginView.backgroundColor = UIColor.clearColor() // just for test self.btnSignUpwithFaceBook.layer.borderWidth = 1 self.btnSignUpwithFaceBook.layer.borderColor = UIColor.whiteColor().CGColor loginView.layer.backgroundColor = UIColor.clearColor().CGColor loginView.readPermissions = ["public_profile", "email", "user_friends"] loginView.delegate = self loginView.setTranslatesAutoresizingMaskIntoConstraints(false) var constX = NSLayoutConstraint(item: loginView, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: self.btnSignUpwithFaceBook, attribute: NSLayoutAttribute.CenterX, multiplier: 1, constant: 0) view.addConstraint(constX) var constY = NSLayoutConstraint(item: loginView, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: self.btnSignUpwithFaceBook, attribute: NSLayoutAttribute.CenterY, multiplier: 1, constant: 0) view.addConstraint(constY) let views = ["loginView": loginView] var constH = NSLayoutConstraint.constraintsWithVisualFormat("H:[loginView(57)]", options: NSLayoutFormatOptions(0), metrics: nil, views: views) view.addConstraints(constH) var constW = NSLayoutConstraint.constraintsWithVisualFormat("V:[loginView(281)]", options: NSLayoutFormatOptions(0), metrics: nil, views: views) view.addConstraints(constW)}
实际上,主要问题是facebookLogInButton是FBSDK的自定义类,而swift并不将其视为uiButton,这就是为什么没有突出显示属性的原因。因此,我希望您的帮助人员能够找到它的要点是找到一种方法,使facebookLoginButton迅速被视为uiButton。
Android的默认样式(特别是ButtonBar和ButtonBar.Button)是如何呈现的?
我看到了对这些样式的引用:
https://www.jb51.cc/tag/buttonbar/" target="_blank">buttonbarStyle"https://www.jb51.cc/tag/buttonbar/" target="_blank">buttonbarButtonStyle"
所以我打开了Android的attrs.xml,这就是我所看到的:
<!-- Style for buttons within button bars --> <attr name="buttonbarButtonStyle" format="reference" /> <!-- Style for button bars --> <attr name="buttonbarStyle" format="reference" />
而已.所以也许这是一种风格,对吧?这是styles.xml:
<style name="Widget.Holo.buttonbar"> <item name="android:divider">?android:attr/dividerVertical</item> </style> <style name="Widget.Holo.buttonbar.Button"> </style>
咦?然而Eclipse和设备能够像这样呈现它们:
那么如何获得正确的尺寸和东西呢?我需要它们的原因是我想在Gingerbread及其下面使用这种类型的按钮栏,它缺少buttonbarStyle属性.因此,他们犯了错误:
解决方法
com.facebook.login.widget.LoginButton的实例源码
public LoginFacebook(LoginButton login,Activity context,PreferencesShared pref,final Intent intent) { callbackManager = CallbackManager.Factory.create(); this.context = context; preferencesShared = pref; login.setReadPermissions(Arrays.asList("public_profile","user_friends")); login.registerCallback(callbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { //Log.d("facebook","succes" + loginResult.getAccesstoken().getToken() + "id" + loginResult.getAccesstoken().getExpires() + "data" + loginResult.getAccesstoken().getUserId()); conectedwithFacebook(loginResult.getAccesstoken().getToken(),intent); } @Override public void onCancel() { Log.d("intra","facebook"); } @Override public void onError(FacebookException error) { Log.d("facebook","error" + error.toString()); } }); }
/** * Register call back manager to Google log in button. * * @param activity the activity * @param loginButton the login button */ private void registerCallBackManager(final Activity activity,LoginButton loginButton) { loginButton.registerCallback(mCallbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { mLoginResult = loginResult; getUserProfile(activity); } @Override public void onCancel() { mFacebookLoginResultCallBack.onFacebookLoginCancel(); } @Override public void onError(FacebookException error) { mFacebookLoginResultCallBack.onFacebookLoginError(error); } }); }
void initializefacebookLogin() { // Initialize Facebook Login button mCallbackManager = CallbackManager.Factory.create(); LoginButton loginButton = (LoginButton) findViewById(R.id.button_facebook_login); loginButton.setReadPermissions("email","public_profile","user_posts","user_photos"); loginButton.registerCallback(mCallbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { Log.d(TAG,"facebook:onSuccess:" + loginResult); handleFacebookAccesstoken(loginResult.getAccesstoken()); } @Override public void onCancel() { Log.d(TAG,"facebook:onCancel"); // ... } @Override public void onError(FacebookException error) { Log.w(TAG,"facebook:onError",error); } }); }
@Override public void onFacebookLoginBntClick(LoginButton loginButton) { mCallbackManager = CallbackManager.Factory.create(); loginButton.setReadPermissions("email","public_profile"); loginButton.registerCallback(mCallbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { handleFacebookAccesstoken(loginResult.getAccesstoken()); } @Override public void onCancel() { } @Override public void onError(FacebookException error) { getView().showSnackBar(error.getMessage()); } }); }
@Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); mAuth = FirebaseAuth.getInstance(); mAuthStateListener = new FirebaseAuth.AuthStateListener() { @Override public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { final FirebaseUser user = firebaseAuth.getCurrentUser(); if(user != null) { finish(); } } }; setContentView(R.layout.activity_login); mSwitcher = findViewById(R.id.switcher); setupEmail(); setupGoogle((SignInButton)findViewById(R.id.button_google)); setupFacebook((LoginButton)findViewById(R.id.button_facebook)); setupTwitter((TwitterLoginButton)findViewById(R.id.button_twitter)); }
private void addLoginButton() { LoginButton loginButton = (LoginButton) this.findViewById(R.id.login_button); loginButton.setReadPermissions(Arrays.asList("email","user_friends","user_birthday")); loginButton.registerCallback(fbCallbackManager,new FacebookCallback<LoginResult>() { private ProfileTracker mProfileTracker; @Override public void onSuccess(LoginResult loginResult) { } @Override public void onCancel() { } @Override public void onError(FacebookException error) { } }); }
protected void getLoginDetails(LoginButton login_button) { // Callback registration login_button.registerCallback(callbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult login_result) { getUserInfo(login_result); } @Override public void onCancel() { // code for cancellation } @Override public void onError(FacebookException exception) { // code to handle error } }); }
public void showFacebookLoginButton() { mCallbackManager = CallbackManager.Factory.create(); firebaseAuth = FirebaseAuth.getInstance(); facebookLoginButton = (LoginButton) findViewById(R.id.login_button); facebookLoginButton.setVisibility(View.VISIBLE); facebookLoginButton.setReadPermissions("email","public_profile"); facebookLoginButton.registerCallback(mCallbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { Log.d("facebook","facebook:onSuccess:" + loginResult); handleFacebookAccesstoken(loginResult.getAccesstoken()); } @Override public void onCancel() { Log.d("facebook","facebook:cancel:"); } @Override public void onError(FacebookException error) { Log.d("facebook","facebook:error" + error.toString()); Toast.makeText(getBaseContext(),"서버에 연결할 수 없습니다. 인터넷 연결을 확인해주세요.",Toast.LENGTH_SHORT).show(); } }); }
private void facebookLogIn(View view) { LoginButton loginButton = (LoginButton) view.findViewById(R.id.login_button); loginButton.setReadPermissions("email"); // If using in a fragment loginButton.setFragment(this); // Other app specific specialization loginButton.performClick(); // Callback registration loginButton.registerCallback(callbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { // App code Toast.makeText(getContext(),"Logged In Successfully",Toast.LENGTH_SHORT).show(); setSessionManagement(); startActivity(new Intent(getApplicationContext(),MapsActivity.class)); } @Override public void onCancel() { // App code Toast.makeText(getContext(),"LogIn Failed",Toast.LENGTH_SHORT).show(); } @Override public void onError(FacebookException exception) { // App code Toast.makeText(getContext(),Toast.LENGTH_SHORT).show(); } }); }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_welcome); setStatusBarColor(); mContext = this; initializeViews(); if (welcomePresenter == null) { welcomePresenter = new WelcomePresenter(mContext); } // Initialize service Intent intent = new Intent(mContext,QuireService.class); startService(intent); Button customButtonFB = (Button) findViewById(R.id.fb_login_button); fbLoginButton = (LoginButton) findViewById(R.id.button_fb_login); mCallbackManager = CallbackManager.Factory.create(); customButtonFB.setonClickListener(new View.OnClickListener() { @Override public void onClick(View view) { fbLoginButton.performClick(); } }); fbLoginButton.setReadPermissions("name"); fbLoginButton.setReadPermissions("email"); fbLoginButton.setReadPermissions("public_profile"); fbLoginButton.registerCallback(mCallbackManager,mCallback); }
private void facebookLogIn(View view) { LoginButton loginButton = (LoginButton) view.findViewById(R.id.login_button); loginButton.setReadPermissions("email"); // If using in a fragment loginButton.setFragment(this); // Other app specific specialization loginButton.performClick(); // Callback registration loginButton.registerCallback(callbackManager,Toast.LENGTH_SHORT).show(); } }); }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_start_page02); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); facebookSignInBtn = (LoginButton) this.findViewById(R.id.signin_with_facebook_btn); list_of_facebook = new ArrayList<>(); this.setUpFacebookSignIn(); }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_new_facebook_friends); getSupportActionBar().setTitle("Facebook Friends Posts"); list_of_facebook = new ArrayList<>(); facebookSignInBtn = (LoginButton) this.findViewById(R.id.facebook_friends_login); this.setUpFacebookSignIn(); }
/** * Sign in to google account - with Google's log in button. * * @param activity the activity * @param callback the callback to receive the method's result * @param loginButton the login button associated with this sign in */ public void signIn(@NonNull Activity activity,@NonNull final FacebookLoginResultCallback callback,@NonNull LoginButton loginButton) { mCallbackManager = CallbackManager.Factory.create(); mFacebookLoginResultCallBack = callback; initLoginButton(activity,loginButton); registerCallBackManager(activity,loginButton); }
private void findViews() { mCallbackManager = CallbackManager.Factory.create(); mAuth = FirebaseAuth.getInstance(); loginGPlus = (Button) findViewById(R.id.loginGPlus); loginGPlus.setonClickListener(this); buildGoogleapiclient(); LoginButton loginButton = (LoginButton) findViewById(R.id.login_button); loginButton.setReadPermissions("email","public_profile"); loginButton.registerCallback(mCallbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { Log.e(TAG,"facebook:onSuccess:" + loginResult); handleFacebookAccesstoken(loginResult.getAccesstoken()); } @Override public void onCancel() { Log.e(TAG,"facebook:onCancel"); // ... } @Override public void onError(FacebookException error) { Log.e(TAG,error); // ... } }); }
private void initializefacebookSignIn() { // Always logout of facebook when sign in button is shown. LoginManager.getInstance().logout(); LoginButton facebookSignInButton = (LoginButton) findViewById(R.id.facebook_sign_in); facebookSignInButton.setReadPermissions("public_profile","email"); mFacebookCallbackManager = CallbackManager.Factory.create(); facebookSignInButton.registerCallback(mFacebookCallbackManager,this); }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); FacebookSdk.sdkInitialize(getApplicationContext()); callbackManager = CallbackManager.Factory.create(); AppEventsLogger.activateApp(this); setContentView(R.layout.activity_main); info = (TextView)findViewById(R.id.info); loginButton = (LoginButton)findViewById(R.id.login_button); loginButton.registerCallback(callbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { info.setText( "User ID: " + loginResult.getAccesstoken().getUserId() + "\n" + "Auth Token: " + loginResult.getAccesstoken().getToken() ); } @Override public void onCancel() { } @Override public void onError(FacebookException e) { } }); count = (TextView) findViewById(R.id.count); sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); }
@Override public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) { View layoutView = inflater.inflate(R.layout.login_button,container,false); LoginButton loginButton = (LoginButton) layoutView.findViewById(R.id.login_button_b); textView = (TextView) layoutView.findViewById(R.id.loginTextView); loginButton.setReadPermissions("email"); loginButton.setFragment(this); loginButton.registerCallback(callbackManager,callback); return layoutView; }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tvstatus = (TextView) findViewById(R.id.tvstatus); btnFacebook = (LoginButton) findViewById(R.id.btnFacebook); findViewById(R.id.btnGoogle).setonClickListener(this); auth = FirebaseAuth.getInstance(); isSignedIn = FirebaseAuth.getInstance().getCurrentUser() != null; //true = User is signed in facebookCallbackManager = CallbackManager.Factory.create(); initEntities(); }
/** * Set up Facebook sign-in. * * @param button The LoginButton */ private void setupFacebook(@NonNull LoginButton button) { mFacebookCallbackManager = CallbackManager.Factory.create(); button.registerCallback(mFacebookCallbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { firebaseAuthWithFacebook(loginResult.getAccesstoken()); } @Override public void onCancel() { mSwitcher.setdisplayedChild(0); } @Override public void onError(FacebookException e) { showError(); } }); button.setonClickListener(new View.OnClickListener() { @Override public void onClick(View view) { mSwitcher.setdisplayedChild(1); } }); }
private void initItems() { toolBarView = (View) findViewById(R.id.toolbar); settingsButton = (ImageButton) findViewById(R.id.settings_button); vkLoginButton = (Button) findViewById(R.id.main_btn_vk); facebookLoginButton = (LoginButton) findViewById(R.id.main_btn_facebook); facebookImage = (ImageView) findViewById(R.id.facebookimage); vkimage = (ImageView) findViewById(R.id.vkimage); prevMonth = (ImageView) findViewById(R.id.prevMonth); nextMonth = (ImageView) findViewById(R.id.nextMonth); currentMonth = (TextView) findViewById(R.id.currentMonth); calendarView = (GridView) findViewById(R.id.calendar); }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login_button); loginButton = (LoginButton) findViewById(R.id.fb_button_login); result = (TextView) findViewById(R.id.result); registerlogin(); }
/** * Login with com.facebook.login.widget.LoginButton * To be called from an android.support.v4.app.Fragment * * @param loginButton instance of a com.facebook.login.widget.LoginButton * @param fragment instance of support android.support.v4.app.Fragment * @return */ @NonNull public static Observable<LoginResult> loginWithButton(@NonNull final LoginButton loginButton,@NonNull final Fragment fragment) { checkNotNull(fragment,"fragment == null"); checkNotNull(loginButton,"loginButton == null"); ReactiveFB.checkInit(); // login return Observable.create(new LoginWithButtonOnSubscribe(loginButton)); }
/** * Login with com.facebook.login.widget.LoginButton * To be called from an android.app.Fragment * * @param loginButton instance of com.facebook.login.widget.LoginButton * @param fragment instance of android.app.Fragment * @return */ @NonNull public static Observable<LoginResult> loginWithButton(@NonNull final LoginButton loginButton,@NonNull final android.app.Fragment fragment) { checkNotNull(fragment,"loginButton == null"); ReactiveFB.checkInit(); // login return Observable.create(new LoginWithButtonOnSubscribe(loginButton)); }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); FacebookSdk.sdkInitialize(getApplicationContext()); setContentView(R.layout.activity_main); setStatusBarTranslucent(true); callbackManager = CallbackManager.Factory.create(); info = (TextView) findViewById(R.id.info); mNewBarberButton = (Button) findViewById(R.id.new_barber_button); mNewBarberButton.setonClickListener(newBarberButtonOnClickListener()); loginButton = (LoginButton) findViewById(R.id.login_button); loginButton.registerCallback(callbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { info.setText( "User ID: " + loginResult.getAccesstoken().getUserId() + "\n" + "Auth Token: " + loginResult.getAccesstoken().getToken() ); } @Override public void onCancel() { info.setText("Login attempt canceled."); } @Override public void onError(FacebookException e) { info.setText("Login attempt Failed."); } }); }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_fblogin); mCallbackManager = CallbackManager.Factory.create(); LoginButton loginButton = (LoginButton) findViewById(R.id.fb_login_button); loginButton.registerCallback(mCallbackManager,this); if (FbSessionUtils.isLoggedIn()) { NavigatorUtils.navigateto(this,NavigatorUtils.createIntentFromTo(this,FbUserDataActivity.class,true /* finish from activity*/)); } }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); mFacebookButton = (LoginButton) findViewById(R.id.FacebookButton); setupFacebookLogin(); mTwitterButton = (TwitterLoginButton) findViewById(R.id.TwitterButton); setupTwitterLogin(); EditText loginEditText = (EditText) findViewById(R.id.LoginEditText); EditText passwordEditText = (EditText) findViewById(R.id.PasswordEditText); findViewById(R.id.LoginButton).setonClickListener(v -> { executeLogin(loginEditText.getText().toString().trim(),passwordEditText.getText().toString().trim()); }); findViewById(R.id.ForgotPasswordTextview).setonClickListener(v1 -> { openForgotPassword(); }); findViewById(R.id.RegistrationTextView).setonClickListener(v -> { openRegistrationForResult(); }); if (mRxMeteor.isLoggedIn()) { Users user = Users.getUser(mRxMeteor.getUserId()); if (user.getUsername() != null) { startMainActivity(); } else { subscribetoUserDataAndStartMainActivity(mRxMeteor.getUserId()); } } }
public void facebooklogin(View view) { LoginButton loginButton = (LoginButton) view.findViewById(R.id.facebook_login_button); loginButton.setReadPermissions("public_profile","email"); callbackManager = CallbackManager.Factory.create(); loginButton.registerCallback(callbackManager,"facebook:onCancel"); FirebaseAuth.getInstance().signOut(); } @Override public void onError(FacebookException error) { Log.d(TAG,error); } }); // If using in a fragment }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //--------------------------------------------// FacebookSdk.sdkInitialize(this);//El SDK necesita ser inicializado antes de usar cualquiera de sus métodos,pasando el contexto de la actividad(Activity) callbackManager = CallbackManager.Factory.create();//inizializamos el CallbackManager //---------------------------------------------// setContentView(R.layout.activity_main); info = (TextView) findViewById(R.id.info); loginButton = (LoginButton) findViewById(R.id.login_button); //--------------------------------------------------// loginButton.registerCallback(callbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) {//Si la autenticacion fue correcta info.setText("Login attempt success."); } @Override public void onCancel() {//Si se cancela la solicitus de login info.setText("Login attempt canceled."); } @Override public void onError(FacebookException e) {//Si ocurre un error info.setText("Login attempt Failed."); } }); }
@Override public void initializeView() { tvLoginResult = (TextView) findViewById(R.id.tv_LoginResult); btnFBLogin = (LoginButton) findViewById(R.id.fbButton); btnShowFriendsList = (Button) findViewById(R.id.btn_showFriendsList); btnLoginFBLoginManager = (Button) findViewById(R.id.but_LoginFBLoginManager); btnShowFriendsList.setonClickListener(this); btnLoginFBLoginManager.setonClickListener(this); }
@Override public void onClick(View v) { getProgressbar().setIndeterminate(true); if (v instanceof SignInButton) { loginManager.login(GooglePlus.ID); } else if (v instanceof LoginButton) { loginManager.login(Facebook.ID); } }
public FBLoginManager init(Context context,Fragment fragment,List<String> readPermissions) { this.context = context; fbLoginButton = new LoginButton(context); fbLoginButton.setReadPermissions(readPermissions); fbLoginButton.setFragment(fragment); fbLoginButton.registerCallback(callbackManager,facebookCallback); return this; }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); FacebookSdk.sdkInitialize(getApplicationContext()); mCallbackManager = CallbackManager.Factory.create(); setContentView(R.layout.activity_facebook); Toolbar toolbar = (Toolbar) findViewById(R.id.activity_toolbar); setSupportActionBar(toolbar); toolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha); toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { NavUtils.navigateUpFromSaMetask(FacebookActivity.this); } }); LoginButton authButton = (LoginButton) findViewById(R.id.activity_facebook_login_button); authButton.setReadPermissions(asList(getResources().getStringArray(R.array.facebook_permissions))); LoginManager.getInstance().registerCallback(mCallbackManager,mFacebookCallback); }
@Override public View onCreateView(LayoutInflater inflater,Bundle savedInstanceState) { View view = inflater.inflate(R.layout.login_facebook,false); LoginButton loginButton = (LoginButton) view.findViewById(R.id.navmenufacebook_loginbutton); loginButton.setReadPermissions("public_profile","email"); loginButton.setFragment(this); // Hide facebook login button if facebook app not installed if (!mFacebookDelegate.isFacebookInstalled()) { loginButton.setVisibility(View.GONE); } return view; }
@Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_auth); mFirebaseAnalytics = FirebaseAnalytics.getInstance(this); mAuth = FirebaseAuth.getInstance(); mAuthListener = new FirebaseAuth.AuthStateListener() { @Override public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { FirebaseUser user = firebaseAuth.getCurrentUser(); if (user != null) { // User is signed in Log.d(TAG,"onAuthStateChanged:signed_in:" + user.getUid()); startActivity(new Intent(AuthActivity.this,HomeActivity.class)); } else { // User is signed out Log.d(TAG,"onAuthStateChanged:signed_out"); } } }; mGoogleSignIn = (SignInButton)findViewById(R.id.google_sign_in); TextView buttonText = (TextView) mGoogleSignIn.getChildAt(0); buttonText.setText(R.string.login_google); mGoogleSignIn.setonClickListener(new View.OnClickListener() { @Override public void onClick(View view) { signIn(); } }); GoogleSignInoptions googleSignInoptions = new GoogleSignInoptions.Builder(GoogleSignInoptions.DEFAULT_SIGN_IN) .requestIdToken(getString(R.string.default_web_client_id)) .requestemail() .build(); mGoogleapiclient = new Googleapiclient.Builder(getApplicationContext()) .enableAutoManage(this,new Googleapiclient.OnConnectionFailedListener() { @Override public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { Toast.makeText(AuthActivity.this,"Coneccao Falhou",Toast.LENGTH_SHORT).show(); } }) .addApi(Auth.GOOGLE_SIGN_IN_API,googleSignInoptions) .build(); callbackManager = CallbackManager.Factory.create(); loginButton = (LoginButton) findViewById(R.id.loginButton); loginButton.setReadPermissions(Arrays.asList("email")); loginButton.registerCallback(callbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { handleFacebookAccesstoken(loginResult.getAccesstoken()); } @Override public void onCancel() { Toast.makeText(getApplicationContext(),R.string.cancel_login,Toast.LENGTH_SHORT).show(); } @Override public void onError(FacebookException error) { Toast.makeText(getApplicationContext(),R.string.error_login,Toast.LENGTH_SHORT).show(); } }); }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); FacebookSdk.sdkInitialize(getApplicationContext()); setContentView(R.layout.activity_login); if (ACTION_logoUT.equals(getIntent().getAction())) { logout(); } else { Accesstoken accesstoken = Accesstoken.getCurrentAccesstoken(); if (accesstoken != null && !accesstoken.isExpired()) { loginAsFacebookUser(accesstoken.getToken(),accesstoken.getUserId(),null); return; } if (isLoggedAsGuest()) { loginAsGuest(); return; } } LoginButton facebookLoginButton = (LoginButton) findViewById(R.id.facebook_login_button); facebookLoginButton.setReadPermissions("public_profile"); mCallbackManager = CallbackManager.Factory.create(); facebookLoginButton.registerCallback(mCallbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { continueFacebookLogin(loginResult); } @Override public void onError(FacebookException error) { Log.e(Application.TAG,"Facebook login error",error); } @Override public void onCancel() { } }); Button guestLoginButton = (Button) findViewById(R.id.guest_login_button); guestLoginButton.setonClickListener(new View.OnClickListener() { @Override public void onClick(View view) { loginAsGuest(); } }); }
private void faceBookLogIn(){ callbackManager = CallbackManager.Factory.create(); LoginButton loginButton = (LoginButton) findViewById(R.id.facebookLogBtn); loginButton.setReadPermissions(Arrays.asList("public_profile","email")); loginButton.registerCallback(callbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { GraphRequest graphRequest = GraphRequest.newMeRequest(loginResult.getAccesstoken(),new GraphRequest.GraphJSONObjectCallback() { @Override public void onCompleted(JSONObject object,GraphResponse response) { Intent home_view = new Intent(MainActivity.this,HomeActivity.class); try { home_view.putExtra("userName",(String) object.get("name")); home_view.putExtra("from","faceBook"); }catch (JSONException e){ } startActivity(home_view); } }); Bundle parameters = new Bundle(); parameters.putString("fields","id,name,email,gender,birthday"); graphRequest.setParameters(parameters); graphRequest.executeAsync(); } @Override public void onCancel() { setResult(3); } @Override public void onError(FacebookException error) { Log.e("LoginErr",error.toString()); } }); }
private void faceBookLogIn(){ callbackManager = CallbackManager.Factory.create(); LoginButton loginButton = (LoginButton) findViewById(R.id.facebookLogBtn); loginButton.setReadPermissions(Arrays.asList("public_profile",error.toString()); } }); }
private void faceBookLogIn(){ callbackManager = CallbackManager.Factory.create(); LoginButton loginButton = (LoginButton) findViewById(R.id.facebookLogBtn); loginButton.setReadPermissions(Arrays.asList("public_profile",error.toString()); } }); }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); FacebookSdk.sdkInitialize(getApplicationContext()); callbackManager = CallbackManager.Factory.create(); loginButton = (LoginButton) findViewById(R.id.login_button); loginButton.registerCallback(callbackManager,new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { check(); } @Override public void onCancel() { } @Override public void onError(FacebookException exception) { Toast.makeText(LoginActivity.this,"Errore: " + exception,Toast.LENGTH_LONG).show(); } }); Button btn = (Button) findViewById(R.id.btn); btn.setonClickListener(new View.OnClickListener() { @Override public void onClick(View view) { loginButton.performClick(); } }); if (isLoggedIn()) { check(); }else{ btn.setVisibility(View.VISIBLE); } }
FBSDKLoginManager.loginWithReadPermissions不在iOS上调用处理程序
func login() { NSLog("Will login with read permissions") FBSDKLoginManager().logInWithReadPermissions( ["public_profile"],handler: { (result: FBSDKLoginManagerLoginResult!,error: NSError!) -> Void in NSLog("Handler is called") }) NSLog("Returning from login") }
调用它时,它会生成以下日志语句:
2015-05-25 11:35:07.886 MyApp[1213:646722] Will login with read permissions 2015-05-25 11:44:22.048 MyApp[1213:646722] Returning from login
(上面的语句之间的大的时间差异是由于我使用调试器来逐步执行logInWithReadPermissions的内部.没有调试器的运行不会改变行为.)
我已经在安装了Facebook原生应用程序并且我已登录的设备上试过这个,我在没有本机应用程序的设备上试过这个,我从来没有访问过Facebook.我也在模拟器上试过这个.我得到了相同的结果.
我假设这是一个同步调用,但为了以防万一,我试着在调用线程中无限期地等待 – 处理程序仍然没有被调用,并且设备上没有任何可见的事情发生.
我打开了我能找到的所有日志记录:
FBSDKSettings.setLoggingBehavior( [FBSDKLoggingBehaviorAppEvents,FBSDKLoggingBehaviorinformational,FBSDKLoggingBehaviorAccesstokens,FBSDKLoggingBehaviorUIControlErrors,FBSDKLoggingBehaviorgraphAPIDebugWarning,FBSDKLoggingBehaviorgraphAPIDebugInfo,FBSDKLoggingBehaviorNetworkRequests,FBSDKLoggingBehaviorCacheErrors,FBSDKLoggingBehaviorDeveloperErrors])
然后,在启动时,我得到这样的:
2015-05-25 11:35:01.320 MyApp[1213:646722] FBSDKLog: Request <#1111>: URL: https://graph.facebook.com/v2.3 Method: POST UserAgent: FBiOSSDK.4.1.0 MIME: multipart/form-data; boundary=3i2ndDfv2rTHiSisAbouNdArYfORhtTPEefj3q2f Body (w/o attachments): batch_app_id: 140xxxxxxxxxxxxx batch: [{"relative_url":"140xxxxxxxxxxxxx?debug=info&fields=app_events_feature_bitmask%2Cname%2Cios_dialog_configs%2Csupports_implicit_sdk_logging%2Cgdpv4_nux_enabled%2Cgdpv4_nux_content%2Cios_supports_system_auth%2Cios_sdk_error_categories&format=json&include_headers=false&sdk=ios","method":"GET"},{"relative_url":"140xxxxxxxxxxxxx?debug=info&fields=app_events_feature_bitmask%2Cname%2Cios_dialog_configs%2Csupports_implicit_sdk_logging%2Cgdpv4_nux_enabled%2Cgdpv4_nux_content%2Cios_supports_system_auth%2Cios_sdk_error_categories&format=json&include_headers=false&sdk=ios","method":"GET"}] 2015-05-25 11:35:01.321 MyApp[1213:646722] FBSDKLog: Request <#1111>: URL: https://graph.facebook.com/v2.3 Method: POST UserAgent: FBiOSSDK.4.1.0 MIME: multipart/form-data; boundary=3i2ndDfv2rTHiSisAbouNdArYfORhtTPEefj3q2f 2015-05-25 11:35:01.329 MyApp[1213:646722] FBSDKLog: FBSDKTimeSpentData Restore: {"numInterruptions":0,"lastSuspendTime":1432544336,"secondsspentInCurrentSession":3} 2015-05-25 11:35:01.363 MyApp[1213:646722] FBSDKLog: FBSDKAppEvents: Recording event @ 1432578901: { "_eventName" = "fb_mobile_activate_app"; "_logTime" = 1432578901; "_ui" = UIAlertController; "fb_mobile_launch_source" = Unclassified; } 2015-05-25 11:35:01.364 MyApp[1213:646722] FBSDKLog: FBSDKAppEvents Persist: Read 0 event states. First state has 0 events 2015-05-25 11:35:01.364 MyApp[1213:646722] FBSDKLog: FBSDKAppEvents Persist: Clearing 2015-05-25 11:35:01.365 MyApp[1213:646722] FBSDKLog: FBSDKAppEvents: Recording event @ 1432578901: { "_eventName" = "fb_mobile_deactivate_app"; "_logTime" = 1432578901; "_ui" = UIAlertController; "_valuetoSum" = 3; "fb_mobile_app_interruptions" = 0; "fb_mobile_launch_source" = Unclassified; "fb_mobile_time_between_sessions" = "session_quanta_5"; } 2015-05-25 11:35:01.781 MyApp[1213:646722] FBSDKLog: FBSDKURLConnection <#1114>: Duration: 460 msec Response Size: 1 kB MIME type: application/json 2015-05-25 11:35:01.783 MyApp[1213:646722] FBSDKLog: Response <#1111> Duration: 461 msec Size: 2011 kB Response Body: ( { body = { "app_events_feature_bitmask" = 1; "gdpv4_nux_content" = "New! You're in control - choose what info you want to share with apps."; "gdpv4_nux_enabled" = 0; id = 140xxxxxxxxxxxxx; "ios_dialog_configs" = { data = ( { name = like; url = "/connect/dialog/MPlatformlikeJSDialog"; versions = ( 20140410 ); },{ name = appinvites; url = "/connect/dialog/MPlatformAppInvitesJSDialog"; versions = ( 20140410 ); } ); }; "ios_sdk_error_categories" = ( { items = ( { code = 102; },{ code = 190; } ); name = login; "recovery_message" = "Please log into this app again to reconnect your Facebook account."; "recovery_options" = ( OK,Cancel ); },{ items = ( { code = 341; },{ code = 9; },{ code = 2; },{ code = 4; },{ code = 17; } ); name = transient; "recovery_message" = "The server is temporarily busy,please try again."; "recovery_options" = ( OK ); } ); "ios_supports_system_auth" = 1; name = MyApp; "supports_implicit_sdk_logging" = 1; }; code = 200; },{ body = { "app_events_feature_bitmask" = 1; "gdpv4_nux_content" = "New! You're in control - choose what info you want to share with apps."; "gdpv4_nux_enabled" = 0; id = 140xxxxxxxxxxxxx; "ios_dialog_configs" = { data = ( { name = like; url = "/connect/dialog/MPlatformlikeJSDialog"; versions = ( 20140410 ); },please try again."; "recovery_options" = ( OK ); } ); "ios_supports_system_auth" = 1; name = MyApp; "supports_implicit_sdk_logging" = 1; }; code = 200; } ) 2015-05-25 11:35:01.841 MyApp[1213:646722] FBSDKLog: Dynamically loaded library at /System/Library/Frameworks/Accounts.framework/Accounts
或这个:
2015-05-25 12:04:59.336 MyApp[1221:650047] FBSDKLog: FBSDKTimeSpentData Restore: {"numInterruptions":0,"secondsspentInCurrentSession":3} 2015-05-25 12:04:59.343 MyApp[1221:650047] FBSDKLog: FBSDKAppEvents: Recording event @ 1432580699: { "_eventName" = "fb_mobile_activate_app"; "_logTime" = 1432580699; "_ui" = UIAlertController; "fb_mobile_launch_source" = Unclassified; } 2015-05-25 12:04:59.344 MyApp[1221:650047] FBSDKLog: FBSDKAppEvents Persist: Read 0 event states. First state has 0 events 2015-05-25 12:04:59.344 MyApp[1221:650047] FBSDKLog: FBSDKAppEvents Persist: Clearing 2015-05-25 12:04:59.345 MyApp[1221:650047] FBSDKLog: FBSDKAppEvents: Recording event @ 1432580699: { "_eventName" = "fb_mobile_deactivate_app"; "_logTime" = 1432580699; "_ui" = UIAlertController; "_valuetoSum" = 3; "fb_mobile_app_interruptions" = 0; "fb_mobile_launch_source" = Unclassified; "fb_mobile_time_between_sessions" = "session_quanta_5"; }
无论哪种方式,我的处理程序从未被调用,但logInWithReadPermissions函数返回正常.
我在AppDelegate中实现了以下所有内容:
func application(application: UIApplication,didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { FBSDKApplicationDelegate.sharedInstance().application( application,didFinishLaunchingWithOptions: launchOptions) } func applicationDidBecomeActive(application: UIApplication) { FBSDKAppEvents.activateApp() } func application(application: UIApplication,openURL url: NSURL,sourceApplication: String?,annotation: AnyObject?) -> Bool { return FBSDKApplicationDelegate.sharedInstance().application( application,openURL: url,sourceApplication: sourceApplication,annotation: annotation) }
我在Info.plist中有这些行:
<array> <dict> <key>CFBundleURLSchemes</key> <array> <string>fb140xxxxxxxxxxxxx</string> </array> </dict> </array> <key>FacebookAppID</key> <string>140xxxxxxxxxxxxx</string> <key>FacebookdisplayName</key> <string>MyApp</string>
我在上面遗漏了什么?如果没有,我该如何进一步调试呢?我可以打开或关闭的任何日志记录?我在XCode或Facebook方面的应用程序设置中的任何人都可以想到我可以看到的东西?
解决方法
@H_301_60@ 你说:“I tried waiting indefinitely in the calling thread — the handler is
still never called,and nothing visible is happening on the device.”
这个调用绝对不是同步的,如果你让主线程忙于紧密的等待循环,那么它将无法“回电”.
要检查的另一件事是确保您的应用程序委托也没有实现
func application(app: UIApplication,options: [String : AnyObject]) -> Bool {
如果在app delegate中实现此方法,则将忽略其他实现:
func application(application: UIApplication,annotation: AnyObject?) -> Bool
Flutter Web-悬停时如何更改Flatbutton TEXT颜色
您可以在下面复制粘贴运行完整代码
您可以使用MouseRegion
的{{1}}属性
代码段
onHover
工作演示
完整代码
void _incrementExit(PointerEvent details) {
setState(() {
textColor = Colors.blue;
_exitCounter++;
});
}
void _updateLocation(PointerEvent details) {
setState(() {
textColor = Colors.red;
x = details.position.dx;
y = details.position.dy;
});
}
return MouseRegion(
onEnter: _incrementEnter,onHover: _updateLocation,onExit: _incrementExit,child: FlatButton(
color: Colors.white,textColor: Colors.teal[700],//when hovered text color change
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(5),
,
对于 textButton
,我们可以使用 foregroundColor
的 ButtonStyle
属性。
TextButton(
style: ButtonStyle(
foregroundColor: MaterialStateProperty.resolveWith<Color>(
(Set<MaterialState> states) {
if (states.contains(MaterialState.focused))
return Colors.red;
if (states.contains(MaterialState.hovered))
return Colors.green;
if (states.contains(MaterialState.pressed))
return Colors.blue;
return Colors.yellow; // null throus error in flutter 2.2+.
}),),onPressed: () { },child: Text('TextButton with custom overlay colors'),)
,
也有一个使用MouseRegion实现此功能的软件包。
https://pub.dev/packages/hovering
示例:
HoverButton(
onpressed: () {
print('test');
},color: Colors.green,hoverColor: Colors.red,hoverTextColor: Colors.blue,child: Text('test'),)
,
您可以像这样更改按钮样式的 foregroundColor
属性:
ElevatedButton.styleFrom().copyWith(
backgroundColor: MaterialStateProperty.resolveWith<Color?>(
(states) {
if (states.contains(MaterialState.hovered)) {
return Colors.blue;
} else if (states.contains(MaterialState.pressed)) {
return Colors.yellow;
}
return Colors.red;
},foregroundColor: MaterialStateProperty.resolveWith<Color?>(
(states) {
if (states.contains(MaterialState.hovered)) {
return Colors.green;
}
return Colors.black;
},);
关于如何更改FBSDKLoginButton iOS 8.3 / Swift 1.2的默认设计?和fb location above 4g设置的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于Android的默认样式(特别是ButtonBar和ButtonBar.Button)是如何呈现的?、com.facebook.login.widget.LoginButton的实例源码、FBSDKLoginManager.loginWithReadPermissions不在iOS上调用处理程序、Flutter Web-悬停时如何更改Flatbutton TEXT颜色的相关信息,请在本站寻找。
本文标签: