"你调用的对象是空的" Exception

Saeedp.

众所周知的成员
加入
10月21日,2020年
消息
54
编程经验
3-5
你好,

我从Nuget安装了Instagramapisharp到我的项目。当我尝试输入我的帐户时,我遇到了这个曲目:
"Unable to login: 你调用的对象是空的."
但我已经定义了对象引用。这是我的代码:

C#:
public static IInstaApi _instaApi;

private static async Task StartInstagram()
    {
        var userSession = new UserSessionData
        {
            UserName = "username",
            Password = "password"
        };

        var _instaApi = InstaApiBuilder.CreateBuilder()
    .SetUser(userSession)
    .UseLogger(new DebugLogger(LogLevel.Exceptions))
    .Build();

我在哪里犯了一个错误?

谢谢,
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,903
地点
切萨皮克,va.
编程经验
10+
The downside of fluent interfaces... debugging when a step in the fluent interface returns a null object. Anyway, you'll have to step through the code to try to see which line actually throws the exception. If I had to guess, it's the CreateBuilder() method which returns a null, but the only true way to know is to step through with the debugger.
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,903
地点
切萨皮克,va.
编程经验
10+
我还会提到,在另一个线程询问同一API中, @sheepings. 给出了警告,Facebook不支持此库作为使用Instagram的有效API,并且您的风险将您的帐户关闭或禁止。
 

Saeedp.

众所周知的成员
加入
10月21日,2020年
消息
54
编程经验
3-5
我还会提到,在另一个线程询问同一API中, @sheepings. 给出了警告,Facebook不支持此库作为使用Instagram的有效API,并且您的风险将您的帐户关闭或禁止。

您可以在此处查看整个代码:
C#:
private static async Task StartInstagram()
    {
        var userSession = new UserSessionData
        {
            UserName = "username",
            Password = "password"
        };

        var _instaApi = InstaApiBuilder.CreateBuilder()
    .SetUser(userSession)
    .UseLogger(new DebugLogger(LogLevel.Exceptions))
    .Build();


        const string stateFile = "state.bin";
        try
        {
            // load session file if exists
            if (File.Exists(stateFile))
            {
                //Console.WriteLine("message = "";");
                message = "Loading state from file";

                using (var fs = File.OpenRead(stateFile))
                {
                    [B]_instaApi.LoadStateDataFromStream(fs);[/B]
                    
                }
            }
        }

        catch (Exception e)
        {
            ExceptionMessage = $" error: {e}";
        }
        if (!_instaApi.IsUserAuthenticated)
        {
            // login


            message = $"Logging in as {userSession.UserName}";
            var logInResult = await _instaApi.LoginAsync();
            if (!logInResult.Succeeded)
            {
                //Console.WriteLine($"Unable to login: {logInResult.Info.Message}");
                message = $"Unable to login: {logInResult.Info.Message}";
                return;
            }
        }

        // save session in file
        [B]var state = _instaApi.GetStateDataAsStream();[/B]
        
        using (var fileStream = File.Create(stateFile))
        {
            state.Seek(0, SeekOrigin.Begin);
            state.CopyTo(fileStream);
        }

    }

你对大胆部分的想法是什么?我应该使用字符串而不是流吗?
我只是测试API。
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,903
地点
切萨皮克,va.
编程经验
10+
I have never seen File.OpenRead() return null before, so if I were to make a bet, it would be that Build() returns a null object so that _instaApi is null.

你为什么不仅仅是逐步浏览你的代码,实际上告诉我们空对象的位置?什么是防止您利用您的调试器?
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,903
地点
切萨皮克,va.
编程经验
10+
我还会提到,在另一个线程询问同一API中, @sheepings. 给出了警告,Facebook不支持此库作为使用Instagram的有效API,并且您的风险将您的帐户关闭或禁止。
*叹气*显然这不仅仅是 @sheepings. 谁警告你。在官方Instagram API之外使用Instagram至少有2个其他线程(如果不是3),每次警告您真的不应该这样做,因为它不受支持。
 

Saeedp.

众所周知的成员
加入
10月21日,2020年
消息
54
编程经验
3-5
是的,我以前做过这个应用程序。
我通过Forums.asp.asp告知了这项工作。我只是想尝试一下,只需更改我的帐户页面。
难道你不知道与第三方Instagram API合作的所有这些应用程序吗?
我引起了你的注意迦va.com

关于我的代码的提示:
当然,我会调试它,但在样本代码中写入:

如果您为.NET核心制作此应用程序:

C#:
_instaApi.LoadStateDataFromStream(fs);
            // in .net core or uwp apps don't use LoadStateDataFromStream
            // use this one:
            // _instaApi.LoadStateDataFromString(new StreamReader(fs).ReadToEnd());
            // you should pass json string as parameter to this function.

C#:
var state = _instaApi.GetStateDataAsStream();
// in .net core or uwp apps don't use GetStateDataAsStream.
// use this one:
// var state = _instaApi.GetStateDataAsString();
// this returns you session as json string.

我使用Blazor Server_side使用此应用程序,但是当我使用推荐的方法时,VS不接受代码,并且在它们下面出现红线。
你可以看到一个例子:

问候,
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,903
地点
切萨皮克,va.
编程经验
10+
RedLines在有用于指示汇编错误。告诉我们那些编译错误是什么。
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,903
地点
切萨皮克,va.
编程经验
10+
难道你不知道与第三方Instagram API合作的所有这些应用程序吗?
我引起了你的注意迦va.com
我不知道。我通常不拆卸应用,看看他们使用的apis - 例如。无论是使用官方Instagram API,还是使用其他可能或可能不使用官方Instagram API的其他库。
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,903
地点
切萨皮克,va.
编程经验
10+
是的,我以前做过这个应用程序。
我通过Forums.asp.asp告知了这项工作。
是的,我也在100英里米的车上推动了我的车。它也有效,但它仍然没有合法地驾驶那种速度。
 

Saeedp.

众所周知的成员
加入
10月21日,2020年
消息
54
编程经验
3-5
你好,

带来不便敬请谅解。

当我将apisharppackage添加到启动配置服务时:
C#:
services.AddInstagramApiSharp();

在它下面出现红线,不接受它。

_instaapi.loadStateDataFromString(新的StreamReader(FS).readtoend());而不是_instaapi.loadStateDataFromString(新的StreamReader(FS).readtoend());

正如我在稍后的帖子中告诉你一个红线出现在它下面,它说:

IINSTAAPI不包含LoadStateFromString的定义。

你有什么意见?

谢谢
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,903
地点
切萨皮克,va.
编程经验
10+
您的代码来自POST#4的帖子对我没有任何问题。我正在使用帖子#7中引用的nuget包的1.5.0.2版本。我拥有的控制台应用程序使用.NET 5。
 
最佳 底部