由于透明的文档,我能够轻松地集成Google SignIn和Facebook SignIn。但是,我在链接时遇到了麻烦。我要做的就是从成功的LinkedIn登录尝试中获取userId
。
如文档所示:https://developer.linkedin.com/docs/android-sdk
我成功生成了一个调试哈希键。但是现在,我在弄清楚如何在项目中配置linkedIn登录时遇到了麻烦。
我的应用程序中具有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>
}
我能够从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();
}
});
答案 0 :(得分:0)
我创建了一个小型库来通过OAuth2实现LinkedIn身份验证
图书馆-https://github.com/Sumudu-Sahan/LinkedInManager
步骤
将以下maven依赖项添加到您的项目级别build.gradle
文件中
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
将以下Maven依赖项添加到您的应用级build.gradle
文件中
dependencies {
implementation 'com.github.Sumudu-Sahan:LinkedInManager:1.00.02'
}
继承您的活动,来自LinkedInManagerResponse
public class MainActivity extends AppCompatActivity implements LinkedInManagerResponse
启动LinkedInRequestManager
对象实例以进行登录过程
LinkedInRequestManager linkedInRequestManager = new LinkedInRequestManager(Activity, LinkedInManagerResponse, "CLIENT ID", "CLIENT SECRET", "REDIRECTION URL");
使用以下语句开始验证
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
LinkedInBuilder
类,并为其提供clientId
,clientSecret
,redirectUrl
和LINKEDIN_REQUEST_Id
并使用它来认证用户,当前,我们支持两种LinkedInBuilder
类型:LinkedInFromActivityBuilder
和LinkedInFromFragmentBuilder
。根据呼叫站点使用所需的身份验证,因此,如果要通过活动进行身份验证,则需要第一个,而如果要通过片段进行身份验证,则请使用第二个。您可能最终会得到类似于以下内容的信息:LinkedInFromFragmentBuilder.getInstance(LoginFragment.this)
.setClientID(clientID)
.setClientSecret(clientSecret)
.setRedirectURI(redirectUrl)
.authenticate(LINKEDIN_REQUEST);
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");
}
}
}
那应该使你身体好起来。 :)