Android-LinkedIn登录

时间:2018-12-09 17:28:35

标签: java android linkedin

由于透明的文档,我能够轻松地集成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();
      }
    });
    

2 个答案:

答案 0 :(得分:0)

我创建了一个小型库来通过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

答案 1 :(得分:0)

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

因此,使用此库,您需要做两件事才能从LinkedIn获得所需的用户ID

  1. 首先,使用LinkedInBuilder类,并为其提供clientIdclientSecretredirectUrlLINKEDIN_REQUEST_Id并使用它来认证用户,当前,我们支持两种LinkedInBuilder类型:LinkedInFromActivityBuilderLinkedInFromFragmentBuilder。根据呼叫站点使用所需的身份验证,因此,如果要通过活动进行身份验证,则需要第一个,而如果要通过片段进行身份验证,则请使用第二个。您可能最终会得到类似于以下内容的信息:
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");
                }
            }
        }

那应该使你身体好起来。 :)