【问题标题】:Android - LinkedIn Sign inAndroid - 领英
【发布时间】:2020-05-12 06:50:17
【问题描述】:

由于文档透明,我能够毫不费力地集成 Google SignIn 和 Facebook SignIn。但是,我在链接中遇到问题。我想做的就是从成功的 LinkedIn 登录尝试中获取 userId

如文档所示:https://developer.linkedin.com/docs/android-sdk

我成功生成了一个调试哈希键。但是现在,我只是在弄清楚如何在我的项目中配置linkedIn登录时遇到了麻烦。

  1. 我的应用中有 Facebook 和 Google 的登录依赖项,但我的 build.gradle 中需要哪些依赖项才能用于 LinkedIn 登录?

    dependencies {
    
      implementation 'com.facebook.android:facebook-login:[4,5)' //Facebook
      implementation 'com.google.android.gms:play-services-auth:15.0.1' //Google
      implementation <insert_linkedin_signInDependency_Here>
    
    }
    
  2. 我能够从 Facebook 和 Google setOnClickListener 方法成功获取 userId。但是我不确定单击linkedIn按钮时如何获取userId。

    //Getting Facebook userId
    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            AccessToken accessToken = loginResult.getAccessToken();
            final String userID = accessToken.getUserId();
      }
    });
    

【问题讨论】:

标签: java android linkedin


【解决方案1】:

我创建了一个小型库来通过 OAuth2 实现 LinkedIn 身份验证

库 - https://github.com/Sumudu-Sahan/LinkedInManager

步骤

  1. 将以下 maven 依赖添加到您的项目级别 build.gradle 文件中

    allprojects { repositories { ... maven { url 'https://jitpack.io' } } }

  2. 将以下 maven 依赖项添加到您的应用级别 build.gradle 文件中

    dependencies { implementation 'com.github.Sumudu-Sahan:LinkedInManager:1.00.02' }

  3. 继承你的活动,来自LinkedInManagerResponse的片段

    public class MainActivity extends AppCompatActivity implements LinkedInManagerResponse

  4. 为登录过程启动LinkedInRequestManager对象实例

    LinkedInRequestManager linkedInRequestManager = new LinkedInRequestManager(Activity, LinkedInManagerResponse, "CLIENT ID", "CLIENT SECRET", "REDIRECTION URL");

  5. 使用以下语句开始身份验证

linkedInRequestManager.showAuthenticateView(LinkedInRequestManager.MODE_BOTH_OPTIONS);

可用模式

LinkedInRequestManager.MODE_EMAIL_ADDRESS_ONLY
LinkedInRequestManager.MODE_LITE_PROFILE_ONLY
LinkedInRequestManager.MODE_BOTH_OPTIONS

【讨论】:

    【解决方案2】:

    如果您愿意使用第 3 方库,我已经为 Android 创建了一个轻量级的“非官方”SDK,您可以从 this GitHub repo 使用它,免责声明:我在遇到相同用例时编写了该库。

    所以使用这个库,你需要做两件事来从 LinkedIn 获取你需要的用户 ID

    1. 首先,使用LinkedInBuilder类并提供你的clientIdclientSecretredirectUrlLINKEDIN_REQUEST_Id并使用它来验证用户,目前我们支持两种类型的LinkedInBuilder:@987654328 @ 和 LinkedInFromFragmentBuilder。根据调用站点使用您需要的一个,因此如果您从 Activity 进行身份验证,则需要第一个,如果从 Fragment 进行身份验证,则使用第二个。您可能会得到类似于以下内容的结果:
    LinkedInFromFragmentBuilder.getInstance(LoginFragment.this)
                            .setClientID(clientID)
                            .setClientSecret(clientSecret)
                            .setRedirectURI(redirectUrl)
                            .authenticate(LINKEDIN_REQUEST);
    
    1. 您需要覆盖onActivityResult,就像您对Facebook 和Google 所做的一样,您还需要检查返回的请求是否与您已经提供的LINKEDIN_REQUEST 相同。如果是这样,并且验证用户成功,您可以获得一个 LinkedInUser 模型,其中包含您要查找的 userId。 您的 onActivityResult 将类似于以下内容:
      @Override
        protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
    
            if (requestCode == LINKEDIN_REQUEST && data != null) {
                if (resultCode == RESULT_OK) {
    
                    //Successfully signed in and retrieved data
                    LinkedInUser user = data.getParcelableExtra("social_login");
                    String userId = user.getId();
                    // do whatever you need with the id.
                } else {
                    //print the error
                    String errMsg = data.getStringExtra("err_message");
                    }
                }
            }
    

    这应该会让你很高兴。 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-09
      • 2015-05-10
      相关资源
      最近更新 更多