Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Dropbox OAuth“获取请求令牌”;无效的OAuth请求“;_Oauth_Dropbox_Dropbox Api - Fatal编程技术网

从Dropbox OAuth“获取请求令牌”;无效的OAuth请求“;

从Dropbox OAuth“获取请求令牌”;无效的OAuth请求“;,oauth,dropbox,dropbox-api,Oauth,Dropbox,Dropbox Api,我正试图从dropbox oauth获取响应数据,如前所述 现在我不知道为什么它总是说{“error”:“无效的OAuth请求”。} 以下是请求令牌的完整代码: -(void)requestTokenSecret { NSString* oauthVersion=@"1"; NSString* oauth_signature_method=@"PLAINTEXT"; NSString* postHeader = [NSString stringWithFormat: @"Aut

我正试图从dropbox oauth获取响应数据,如前所述 现在我不知道为什么它总是说
{“error”:“无效的OAuth请求”。}

以下是请求令牌的完整代码:

-(void)requestTokenSecret
{

  NSString* oauthVersion=@"1";
  NSString* oauth_signature_method=@"PLAINTEXT";


  NSString* postHeader = [NSString stringWithFormat: @"Authorization: OAuth oauth_version=\"%@\", oauth_signature_method=\"%@\", oauth_consumer_key=\"%@\", oauth_signature=\"%@&\"",oauthVersion,oauth_signature_method,APP_KEY,APP_SECRET];
  NSLog(@"URL HEADER: %@",postHeader);


  NSData* postHeaderData = [postHeader dataUsingEncoding:NSUTF8StringEncoding]; 

  NSMutableURLRequest* request= [[NSMutableURLRequest alloc]init];

  [request setURL:[NSURL URLWithString:@"https://api.dropbox.com/1/oauth/request_token"]];
  [request setHTTPMethod:@"POST"];

  [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

  [request setValue:[NSString stringWithFormat:@"%d",[postHeaderData length]] forHTTPHeaderField:@"Content-Length"];
  [request setHTTPBody:postHeaderData];

  NSURLConnection* conn = [[NSURLConnection alloc]initWithRequest:request delegate:self];
  [conn start];
  if(conn)
  {
    NSLog(@"Connected");
  }
  else
    NSLog(@"Connected");
}

看起来您将“Authorization:OAuth…”放在POST请求的主体中,而不是将“OAuth…”放在
Authorization
头中

请尝试此代码(未测试,抱歉):


另外,我强烈建议使用OAuth 2而不是OAuth 1。这相当简单。

后续问题。是否可以跳过用户授权?(第2步[此处])?我只使用1个静态帐户,正如我的问题[这里]中所述。[1] [2]看起来堆栈溢出问题已得到正确回答。你几乎肯定不想这样做,但答案告诉你如果你坚持下去怎么做。方法
[dbSession updateAccessToken:APP\u ACCESS\u TOKEN accessTokenSecret:APP\u SECRET for userid:APP\u USER\u EMAIL]需要访问令牌和访问令牌密钥。当我试图将请求令牌转换为访问令牌时,它会显示“请求令牌未被正确授权”,但我想跳过向用户显示授权页面。(中的步骤2)
NSString* oauthVersion=@"1";
NSString* oauth_signature_method=@"PLAINTEXT";

NSString* authorizationHeader = [NSString stringWithFormat: @"OAuth oauth_version=\"%@\", oauth_signature_method=\"%@\", oauth_consumer_key=\"%@\", oauth_signature=\"%@&\"",oauthVersion,oauth_signature_method,APP_KEY,APP_SECRET];

NSMutableURLRequest* request= [[NSMutableURLRequest alloc]init];

[request setURL:[NSURL URLWithString:@"https://api.dropbox.com/1/oauth/request_token"]];
[request setHTTPMethod:@"POST"];

[request setValue:authorizationHeader forHTTPHeaderField:@"Authorization"];

NSURLConnection* conn = [[NSURLConnection alloc]initWithRequest:request delegate:self];
[conn start];