如何实现“用LinkedIn登录"使用“OAuth 2.0"在安卓中 [英] How to implement "Login with LinkedIn" with "OAuth 2.0" in Android
问题描述
在 OAuth1.0 中使用 Linkedin 登录"工作正常,但几天前 Linkedin 对其政策进行了一些更改,请参阅以下链接了解更多详细信息,https://engineering.linkedin.com/blog/2018/12/developer-程序更新
我也尝试了一些 GitHub 示例和其他参考,但不幸的是对我不起作用,我也尝试了下面的链接,但它没有满足确切的要求.
你也可以参考下面的链接,它可能会给出一些结果,我也知道 Linkedin SDK 在这里不起作用,因为他们在这里声明,https://developer.linkedin.com/docs/android-sdk我们必须调用手动 URL 并打开 Webview.
我还检查了 3-4 个早期支持 LinkedIn 身份验证的应用程序,但现在他们删除了它,但我检查了一个名为Nuzzel"的应用程序,因为我发现 Linked in authentication 并且工作正常,所以这意味着有一些方法可以正确地做.Nuzzel 应用链接:- https://play.google.com/store/apps/details?id=com.nuzzel.android&hl=en_GB
谢谢
经过一些努力,我得到了它的工作,但是每次开始一个新项目时都实施它会浪费很多时间.
因此,我为此创建了一个轻量级的库.>
只需将依赖项添加到您的应用级别 build.gradle
文件
依赖项{实现 'com.shantanudeshmukh:linkedinsdk:1.0.0'}
发起登录请求.
LinkedInBuilder.getInstance(MainActivity.this).setClientID("").setClientSecret("").setRedirectURI("").authenticate(LINKEDIN_REQUEST_CODE);
处理响应:
@Overrideprotected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);如果(请求代码 == LINKEDIN_REQUEST_CODE && 数据!= null){如果(结果代码 == RESULT_OK){//登录成功LinkedInUser user = data.getParcelableExtra(social_login");//访问用户信息Log.i(LinkedInLogin", user.getFirstName());} 别的 {如果(data.getIntExtra(err_code",0)==LinkedInBuilder.ERROR_USER_DENIED){//处理:用户拒绝访问帐户} else if (data.getIntExtra("err_code", 0) == LinkedInBuilder.ERROR_FAILED) {//处理:API 中的错误:有关详细信息,请参阅 logcat 输出Log.e("LINKEDIN ERROR", data.getStringExtra("err_message"));}}}}
我在多个生产应用程序中使用这个库,所以我会尽量保持更新.您可以在此处找到其他详细信息.
In OAuth1.0 "Login with Linkedin" Working fine but before few days Linkedin make some changes in their policy, please refer below link for more detail, https://engineering.linkedin.com/blog/2018/12/developer-program-updates
I also tried some GitHub example and other reference but unfortunately not work for me, I also tried below link but it did not fulfill the exact requirement.
Oauth 2.0 authorization for LinkedIn in Android
You can also refer below link, may it give some result, I also know Linkedin SDK not work here as they declared here, https://developer.linkedin.com/docs/android-sdk We have to call manual URL and open into Webview.
I also check 3-4 apps which earlier had LinkedIn support for authentication but now they removed it but I check one app namely "Nuzzel" in that I found Linked in authentication and it's working fine so it means there is some way to do it properly. Nuzzel App Link:- https://play.google.com/store/apps/details?id=com.nuzzel.android&hl=en_GB
Thanks
After a little effort I got it working, but implementing it every time you start a new project will waste a lot of time.
So I created a light weight library for the same.
Just add the dependency to your app level build.gradle
file
dependencies {
implementation 'com.shantanudeshmukh:linkedinsdk:1.0.0'
}
Initiate Login Request.
LinkedInBuilder.getInstance(MainActivity.this)
.setClientID("<YOUR_CLIENT_ID_HERE>")
.setClientSecret("<YOUR_CLIENT_SECRET_HERE>")
.setRedirectURI("<YOUR_REDIRECT_URL_HERE>")
.authenticate(LINKEDIN_REQUEST_CODE);
Handle the response:
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == LINKEDIN_REQUEST_CODE && data != null) {
if (resultCode == RESULT_OK) {
//Successfully signed in
LinkedInUser user = data.getParcelableExtra("social_login");
//acessing user info
Log.i("LinkedInLogin", user.getFirstName());
} else {
if (data.getIntExtra("err_code", 0) == LinkedInBuilder.ERROR_USER_DENIED) {
//Handle : user denied access to account
} else if (data.getIntExtra("err_code", 0) == LinkedInBuilder.ERROR_FAILED) {
//Handle : Error in API : see logcat output for details
Log.e("LINKEDIN ERROR", data.getStringExtra("err_message"));
}
}
}
}
I'm using this library in multiple production apps, so I'll try to keep it as updated as possible. You can find other details here.
这篇关于如何实现“用LinkedIn登录"使用“OAuth 2.0"在安卓中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!