درود خدمت دوستان . من فکر می کنم قبل از انتقال و … هرچیزی که بالا گفتم اول مشکلمو با گوگل باید حل کنم بعد برم سمت حالا انتقال درخواست و … بخاطر همین ازتون خواهش می کنم موارد بالا گفتم رو فراموش کنید
نکنه : من از کتابخونه هایی مثل اوبرث و آس۲ هم استفاده کردم ولی موفق نشدم
بر اساس داکیومنت گوگل در قسمت دسترسی

در اولین درخواست من به صورت دستی در داخل مروگرم زدم به شرح زیر :
https://accounts.google.com/o/oauth2/v2/auth?client_id=client_id-oek2de1m5grpksf87fhr81c4o9es0460.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A4000%2Fauth%2Fgoogle%2Fcallback&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive
بعد در برگشت به یکی از توابع من رفت که در روتر تعریف کردم و به وسیله params اومدم و کدی که برگشت داده بود رو دریافت کردم . بر اساس آموزش هایی که ملت تو استک قرار دادن من هم دوباره به صورت زیر ارسال کردمش
def gettogoogle() do
url = "https://accounts.google.com/o/oauth2/token"
options = Poison.encode!(%{
"code" => "__code__",
"grant_type" => "authorization_code",
"client_id" => "client_id.apps.googleusercontent.com",
"redirect_uri" => "http://localhost:4000/auth/google/callback",
"client_secret" => "client_secret",
})
headers = [{"Content-Type", "application/x-www-form-urlencoded"}]
HTTPoison.post!(url, options, headers)
end
که متاسفانه ارور زیر رو بهم می ده
Required parameter is missing: grant_type
خیلی مطالب خوندم تست کردم ولی این ارور رد نشد یا رد بشه مشکلات دیگه ای پیش می یاد
نکته : تمامی موارد بالا لطفا بزارید کنار در صورت امکان اگر تاحالا کار کردید با ای پی آی گوگل لطفا کمک کنید اولین مشکل رو حل کنم . تا برسم سر مشکلات بعدی .
با تشکر
https://developers.google.com/identity/protocols/OAuth2
https://developers.google.com/identity/protocols/OAuth2WebServer
به روز رسانی
من از Rest هم تست زدم به شرح زیر
def gettogoogle() do
url = "https://www.googleapis.com/oauth2/v4/token"
options = Poison.encode!(%{
"code" => "codeCRGVMaOzaLbhw_vB7qYuk",
"client_id" => "client_id",
"client_secret" => "client_secret",
"grant_type" => "authorization_code",
"redirect_uri" => "http://localhost:4000/auth",
})
headers = [{"Content-Type", "application/x-www-form-urlencoded"}]
HTTPoison.post!(url, options, headers)
end
که ارور زیر دریافت می کنم
%HTTPoison.Response{body: "{\n \"error\": \"unsupported_grant_type\",\n \"error_description\": \"Invalid grant_type: \"\n}\n",
headers: [{"Vary", "X-Origin"},
{"Content-Type", "application/json; charset=UTF-8"},
{"Date", "Thu, 07 Sep 2017 09:00:13 GMT"},
{"Expires", "Thu, 07 Sep 2017 09:00:13 GMT"},
{"Cache-Control", "private, max-age=0"},
{"X-Content-Type-Options", "nosniff"}, {"X-Frame-Options", "SAMEORIGIN"},
{"X-XSS-Protection", "1; mode=block"}, {"Server", "GSE"},
{"Alt-Svc", "quic=\":443\"; ma=2592000; v=\"39,38,37,35\""},
{"Accept-Ranges", "none"}, {"Vary", "Origin,Accept-Encoding"},
{"Transfer-Encoding", "chunked"}],
request_url: "https://www.googleapis.com/oauth2/v4/token", status_code: 400}
جالبه رستش خیلی ساده هست چیزی که تو داکیومنت هست نمی دونم چرا نمی تونم انجامش بده . هیچی نداره ولی ارور می ده ارور بالا