在Cloudrail AdvancedRequestSpecification中需要发送什么URL以获得LinkedIn Experience或Education个人资料部分?

时间:2018-06-27 10:45:14

标签: xamarin cloudrail

我实现了使用LinkedIn社会样本登录,并使用Github Cloudrail-Xamarin示例成功获取了ID,姓名,电子邮件,性别,PictureUrl,描述和出生日期。

documentation建议使用AdvancedRequestSpecification功能来请求LinkedIn个人资料的“教育”或“经验”部分。但是只举了一个保管箱的例子。

需要在AdvancedRequestSpecification中发送什么URL(“ URL转到此处”)以获取LinkedIn个人资料的“教育”或“经验”部分?

2 个答案:

答案 0 :(得分:0)

据我所知,它应该是相同的URL,但是您需要申请“使用LinkedIn程序申请”才能获得完整的答复。以下是所有可用字段的列表:https://developer.linkedin.com/docs/fields

答案 1 :(得分:0)

最后,我能够在Android上获得一些额外的信息,但在iOS上却没有。

1)在PCL项目上,我添加了一个接口:

public interface ILinkedIn
{
    Task<Model.LinkedInProfile> GetLinkedInProfile();
}

2)在Android项目上,我添加了以下依赖项服务的实现

public async Task<Model.LinkedInProfile> GetLinkedInProfile()
{
    var profile = new Model.LinkedInProfile();
    int numTries = 500;
    var service = new LinkedIn(MainActivity.Instance, "blablabla", "blablabla");
    new System.Threading.Thread(new System.Threading.ThreadStart(() =>
    {
        try
        {
            service.Login();
            profile.Description = service.Description;
            profile.ImageUrl = service.PictureURL;
            var req = new AdvancedRequestSpecification("/people/~:(positions,public-profile-url)?format=json");
            var res = service.AdvancedRequest(req);
            profile.Exta = Newtonsoft.Json.JsonConvert.DeserializeObject<Model.ExtraProfile>(res.BodyAsString);
            service.Logout();
        }
        catch
        {
            numTries = 0;
        }
    })).Start();
    while (numTries-- > 0 && profile.Exta == null)
        await Task.Delay(250);
    return profile;
}

3)在iOS项目上,我添加了类似的Dependency服务实现

public async Task<Model.LinkedInProfile> GetLinkedInProfile()
{
    var profile = new Model.LinkedInProfile();
    int numTries = 500;
    CRLinkedIn service = new CRLinkedIn("blablabla", "blablabla");
    new System.Threading.Thread(new System.Threading.ThreadStart(() =>
    {
        try
        {
            service.Login();
            profile.Description = service.GetProfileDescription();
            profile.ImageUrl = service.GetPictureURL();
            CRAdvancedRequestSpecification req = new CRAdvancedRequestSpecification("/people/~:(positions,public-profile-url)?format=json");

/* Edited to Add the next 3 lines as the cloudrail suggested fix for iOS */
req.Method = @"GET";
req.Headers = new Foundation.NSMutableDictionary();
req.SetBodyAsString("");
/* Finished Editing */

            var res = service.AdvancedRequestWithSpecification(req);
            profile.Exta = Newtonsoft.Json.JsonConvert.DeserializeObject<Model.ExtraProfile>(res.BodyAsString);
            service.Logout();
        }
        catch
        {
            numTries = 0;
        }
    })).Start();
    while (numTries-- > 0 && profile.Exta == null)
        await Task.Delay(250);
    return profile;
}

4)在Android上,它可以完美运行,但在iOS上,它会抛出异常:

注意:请参见上面的cloudrail修复程序

        var res = service.AdvancedRequestWithSpecification(req);

说:

Objective-C异常抛出。名称:CRUnknownException原因:ServiceCode函数AdvancedRequestSupporter:advancedRequest在10时出错,[***-[NSMutableDictionary setObject:forKey:]:发送到未初始化的可变字典对象的方法] 本机堆栈跟踪:

  • 0 CoreFoundation 0x000000018532ada4
    • 252 1 libobjc.A.dylib 0x00000001844e45ec objc_exception_throw + 56 2 CoreFoundation
      0x000000018532a9f0 + 0 3 CloudrailSI
      0x0000000108a5a778-[CRLinkedIn checkForError:] + 316 4
      CloudrailSI 0x0000000108a5a2bc-[CRLinkedIn advancedRequestWithSpecification:] + 620 5 LocalJobMarket.iOS
      0x00000001047e56d4 wrapper_managed_to_native_ApiDefinition_Messaging_IntPtr_objc_msgSend_IntPtr_intptr_intptr_intptr
    • 228 6 LocalJobMarket.iOS 0x0000000104773a68 CloudRailSI_CRLinkedIn_AdvancedRequestWithSpecification_CloudRailSI_CRAdvancedRequestSpecification
    • 344 7 LocalJobMarket.iOS 0x0000000102f51630 LocalJobMarket_iOS_LinkedIn_iOS__c__DisplayClass0_0__GetLinkedInProfileb__0
    • 320 8 LocalJobMarket.iOS 0x00000001030d09cc System_Threading_ThreadHelper_ThreadStart_Context_object + 188 9
      LocalJobMarket.iOS 0x00000001030ce744 System_Threading_ExecutionContext_RunInternal_System_Threading_ExecutionContext_System_Threading_ContextCallback_object_bool
    • 404 10 LocalJobMarket.iOS 0x00000001030ce59c System_Threading_ExecutionContext_Run_System_Threading_ExecutionContext_System_Threading_ContextCallback_object_bool
    • 44 11 LocalJobMarket.iOS 0x00000001030ce51c System_Threading_ExecutionContext_Run_System_Threading_ExecutionContext_System_Threading_ContextCallback_object
    • 76 12 LocalJobMarket.iOS 0x00000001030d0b34 System_Threading_ThreadHelper_ThreadStart + 52 13 LocalJobMarket.iOS 0x0000000103226ae8 wrapper_runtime_invoke_object_runtime_invoke_dynamic_intptr_intptr_intptr_intptr
    • 248 14 LocalJobMarket.iOS 0x00000001050a967c mono_jit_runtime_invoke + 904 15 LocalJobMarket.iOS
      0x0000000105126b34 mono_runtime_invoke_checked + 148 16 LocalJobMarket.iOS 0x000000010515e258 start_wrapper
    • 676 17 libsystem_pthread.dylib 0x0000000184f51220 + 272 18 libsystem_pthread.dylib
      0x0000000184f51110 + 0 19 libsystem_pthread.dylib
      0x0000000184f4fb10 thread_start + 4

希望能为解决iOS崩溃提供任何帮助。

感谢cloudrail支持