当前位置: 首页 > 知识库问答 >
问题:

通过请求代码区分活动结果,如何在代码中为“LoginWithFB”编写请求代码

孙梓
2023-03-14
public  class MainActivity extends AppCompatActivity
        implements LoginSocial.OnFragmentInteractionListener, Updates.OnFragmentInteractionListener,View.OnClickListener,GoogleApiClient.OnConnectionFailedListener {
    private SignInButton sign;
    private GoogleApiClient googleApiClient;
    static final int Set_Ringtone = 0;
    static final int PICK_CONTACT_REQUEST = 1;
    private static final int RC_SIGN_IN = 9001;
    private String TAG;
    private Toolbar toolbar;
    private TabLayout tabLayout;
    private ViewPager viewPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        FacebookSdk.sdkInitialize(getApplicationContext());

        setContentView(R.layout.activity_main);
        initializeControls();
        loginWithFB();
        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        viewPager = (ViewPager) findViewById(R.id.viewpager);
        setupViewPager(viewPager);

        tabLayout = (TabLayout) findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(viewPager);


        sign = (SignInButton)findViewById(R.id.sign_in_button);

        sign.setOnClickListener(this);


    }
    @Override
    public void onClick(View view) {

        switch (view.getId())

        {
            case R.id.sign_in_button:
                sign();
                break;
        }
    }

    private void sign() {
        Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(googleApiClient);
        startActivityForResult(signInIntent, RC_SIGN_IN);
    }



    @Override
    public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {

    }



    private void handleResult(GoogleSignInResult result) {

        Log.d(TAG, "handleSignInResult:" + result.isSuccess());
        if (result.isSuccess()) {
            // Signed in successfully, show authenticated UI.
            GoogleSignInAccount acct = result.getSignInAccount();
            updateUI(true);
        } else {
            // Signed out, show unauthenticated UI.
            updateUI(false);
        }


    }

    private void updateUI(boolean b) {


    }





    private void setupViewPager(ViewPager viewPager) {
        ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
        adapter.addFragment(new LoginSocial(), "ONE");
        adapter.addFragment(new Updates(), "TWO");
        viewPager.setAdapter(adapter);


    }



    @Override
    public void onFragmentInteraction(Uri uri) {

    }

    class ViewPagerAdapter extends FragmentPagerAdapter {
        private final List<Fragment> mFragmentList = new ArrayList<>();
        private final List<String> mFragmentTitleList = new ArrayList<>();

        public ViewPagerAdapter(FragmentManager manager) {
            super(manager);
        }

        @Override
        public Fragment getItem(int position) {
            return mFragmentList.get(position);
        }

        @Override
        public int getCount() {
            return mFragmentList.size();
        }

        public void addFragment(Fragment fragment, String title) {
            mFragmentList.add(fragment);
            mFragmentTitleList.add(title);
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return mFragmentTitleList.get(position);
        }
    }


    TextView txtStatus;
    LoginButton fb_login;
    CallbackManager callbackManager;



    private void initializeControls(){

        callbackManager = CallbackManager.Factory.create();
        txtStatus = (TextView) findViewById(R.id.txtStatus);
        fb_login = (LoginButton) findViewById(R.id.fb_login);
    }


    private void loginWithFB(){

        LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                txtStatus.setText("Login Success");
            }

            @Override
            public void onCancel() {
                txtStatus.setText("Login Cancelled.");
            }

            @Override
            public void onError(FacebookException error) {
                txtStatus.setText("Login Error:"+error.getMessage());
            }
        });
    }



    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);




            callbackManager.onActivityResult(requestCode, resultCode, data);




        if (requestCode == RC_SIGN_IN) {
            GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
            handleResult(result);


        }

共有1个答案

童冠玉
2023-03-14

您可以使用facebooksdk.isfacebookRequestCode()检查请求代码是否来自Facebook。

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    super.onActivityResult(requestCode, resultCode, data);
    if (FacebookSdk.isFacebookRequestCode(requestCode) {
        // Facebook
        callbackManager.onActivityResult(requestCode, resultCode, data);
    } else if (requestCode == RC_SIGN_IN) {
       // Google
        GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
        handleResult(result);
    }
}
 类似资料:
  • 本文向大家介绍原生Ajax请求代码?相关面试题,主要包含被问及原生Ajax请求代码?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: Ajax能够在不重新加载整个页面的情况下与服务器交换数据并更新部分网页内容,实现局部刷新,大大降低了资源的浪费,是一门用于快速创建动态网页的技术,ajax的使用分为四部分: 1、创建XMLHttpRequest对象var xhr = new XMLHttpRe

  • Java import java.io.IOException; import java.net.URLEncoder; import java.security.MessageDigest; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collections; import jav

  • 我正在使用JMeter为2000个用户测试托管在azure服务器上的应用程序。但我得到了以下错误响应代码:非HTTP响应代码:org.apache.HTTP.conn.HttpHostConnectException响应消息:非HTTP回应消息:连接到http://www.app.com拒绝 响应代码:非HTTP响应代码:Java . net . sockettimeoutexception响应消

  • 是否可以集中存储常见的javascript函数,以便在预请求脚本中使用?

  • 范围 我正在尝试构建一个简单的Python CLI脚本,该脚本将使用Office 365服务通信API参考(预览版),以便检索各种工作负载的当前状态。 为了使用API,我在Azure AD中注册并配置了一个新的应用程序,它具有使用OAuth2.0代码授权流的必要权限。 问题 如何以编程方式绕过获取授权代码所需的登录步骤? 在代码中,我在以下URL上执行GET操作: https://login.mi

  • 我尝试在jmeter中为用java编写的web服务(Spring MVC Hibernate)实现负载测试。服务器是RESTFull的,客户端(angularjs)与服务器通信。 我想用jmeter HTTP请求记录器转储HTTP请求,就像jmeter用户指南教程一样。 问题是,在web浏览器上使用jmeter作为代理时,我不断收到415 Http错误。因此,该网页在试图发布数据时遇到错误,但失败