コンテンツへスキップ
NextAuth.js v4からの移行?こちらを ご確認ください.

providers/vk

ビルトインのVK統合。

VkProfile

https://dev.vk.com/reference/objects/user

プロパティ

about?

optional about: string;

activities?

optional activities: string;

bdate?

optional bdate: string;

blacklisted?

optional blacklisted: 0 | 1;

blacklisted_by_me?

optional blacklisted_by_me: 0 | 1;

books?

optional books: string;

can_access_closed

can_access_closed: boolean;

can_post?

optional can_post: 0 | 1;

can_see_all_posts?

optional can_see_all_posts: 0 | 1;

can_see_audio?

optional can_see_audio: 0 | 1;

can_send_friend_request?

optional can_send_friend_request: 0 | 1;

can_write_private_message?

optional can_write_private_message: 0 | 1;

career?

optional career: {
  city_id: number;
  city_name: string;
  company: string;
  country_id: number;
  from: number;
  group_id: number;
  position: string;
  until: number;
};
city_id?
optional city_id: number;
city_name?
optional city_name: string;
company?
optional company: string;
country_id?
optional country_id: number;
from?
optional from: number;
group_id?
optional group_id: number;
position?
optional position: string;
until?
optional until: number;

都市?

optional city: {
  id: number;
  title: string;
};
ID
id: number;
タイトル
title: string;

common_count?

optional common_count: number;

接続?

optional connections: {
  facebook: string;
  instagram: string;
  livejournal: string;
  skype: string;
  twitter: string;
};
Facebook?
optional facebook: string;
Instagram?
optional instagram: string;
LiveJournal?
optional livejournal: string;
Skype?
optional skype: string;
Twitter?
optional twitter: string;

連絡先

optional contacts: {
  home_phone: string;
  mobile_phone: string;
};
自宅電話?
optional home_phone: string;
携帯電話?
optional mobile_phone: string;

カウンター?

optional counters: {
  albums: number;
  audios: number;
  followers: number;
  friends: number;
  groups: number;
  mutual_friends: number;
  notes: number;
  online_friends: number;
  pages: number;
  photos: number;
  user_videos: number;
  videos: number;
};
アルバム
optional albums: number;
オーディオ
optional audios: number;
フォロワー
optional followers: number;
友達
optional friends: number;
グループ
optional groups: number;
共通の友達?
optional mutual_friends: number;
ノート
optional notes: number;
オンラインの友達?
optional online_friends: number;
ページ
optional pages: number;
写真
optional photos: number;
ユーザー動画
optional user_videos: number;
動画
optional videos: number;

国?

optional country: {
  id: number;
  title: string;
};
ID
id: number;
タイトル
title: string;

切り抜き写真?

optional crop_photo: {
  crop: {
     x: number;
     x2: number;
     y: number;
     y2: number;
  };
  photo: {
     access_key: string;
     album_id: number;
     can_comment: 0 | 1;
     date: number;
     has_tags: boolean;
     height: number;
     id: number;
     images: {
        height: number;
        type:   | "p"
           | "q"
           | "s"
           | "r"
           | "x"
           | "y"
           | "m"
           | "l"
           | "o"
           | "z"
           | "w";
        url: string;
        width: number;
     }[];
     lat: number;
     long: number;
     owner_id: number;
     photo_256: string;
     place: string;
     post_id: number;
     sizes: {
        height: number;
        src: string;
        type:   | "max"
           | "k"
           | "a"
           | "b"
           | "i"
           | "p"
           | "q"
           | "s"
           | "g"
           | "d"
           | "r"
           | "x"
           | "y"
           | "m"
           | "l"
           | "o"
           | "z"
           | "w"
           | "c"
           | "e"
           | "j"
           | "temp"
           | "h"
           | "n"
           | "f";
        url: string;
        width: number;
     }[];
     text: string;
     user_id: number;
     width: number;
  };
  rect: {
     x: number;
     x2: number;
     y: number;
     y2: number;
  };
};
切り抜き
crop: {
  x: number;
  x2: number;
  y: number;
  y2: number;
};
crop.x
x: number;
crop.x2
x2: number;
crop.y
y: number;
crop.y2
y2: number;
写真
photo: {
  access_key: string;
  album_id: number;
  can_comment: 0 | 1;
  date: number;
  has_tags: boolean;
  height: number;
  id: number;
  images: {
     height: number;
     type:   | "p"
        | "q"
        | "s"
        | "r"
        | "x"
        | "y"
        | "m"
        | "l"
        | "o"
        | "z"
        | "w";
     url: string;
     width: number;
  }[];
  lat: number;
  long: number;
  owner_id: number;
  photo_256: string;
  place: string;
  post_id: number;
  sizes: {
     height: number;
     src: string;
     type:   | "max"
        | "k"
        | "a"
        | "b"
        | "i"
        | "p"
        | "q"
        | "s"
        | "g"
        | "d"
        | "r"
        | "x"
        | "y"
        | "m"
        | "l"
        | "o"
        | "z"
        | "w"
        | "c"
        | "e"
        | "j"
        | "temp"
        | "h"
        | "n"
        | "f";
     url: string;
     width: number;
  }[];
  text: string;
  user_id: number;
  width: number;
};
photo.access_key?
optional access_key: string;
photo.album_id
album_id: number;
photo.can_comment?
optional can_comment: 0 | 1;
photo.date
date: number;
photo.has_tags
has_tags: boolean;
photo.height?
optional height: number;
photo.id
id: number;
photo.images?
optional images: {
  height: number;
  type:   | "p"
     | "q"
     | "s"
     | "r"
     | "x"
     | "y"
     | "m"
     | "l"
     | "o"
     | "z"
     | "w";
  url: string;
  width: number;
  }[];
photo.lat?
optional lat: number;
photo.long?
optional long: number;
photo.owner_id
owner_id: number;
photo.photo_256?
optional photo_256: string;
photo.place?
optional place: string;
photo.post_id?
optional post_id: number;
photo.sizes?
optional sizes: {
  height: number;
  src: string;
  type:   | "max"
     | "k"
     | "a"
     | "b"
     | "i"
     | "p"
     | "q"
     | "s"
     | "g"
     | "d"
     | "r"
     | "x"
     | "y"
     | "m"
     | "l"
     | "o"
     | "z"
     | "w"
     | "c"
     | "e"
     | "j"
     | "temp"
     | "h"
     | "n"
     | "f";
  url: string;
  width: number;
  }[];
photo.text?
optional text: string;
photo.user_id?
optional user_id: number;
photo.width?
optional width: number;
矩形
rect: {
  x: number;
  x2: number;
  y: number;
  y2: number;
};
rect.x
x: number;
rect.x2
x2: number;
rect.y
y: number;
rect.y2
y2: number;

非アクティブ化?

optional deactivated: string;

ドメイン?

optional domain: string;

教育歴?

optional education: {
  faculty: number;
  faculty_name: string;
  graduation: number;
  university: number;
  university_name: string;
};
学部?
optional faculty: number;
学部名?
optional faculty_name: string;
卒業?
optional graduation: number;
大学?
optional university: number;
大学名?
optional university_name: string;

メールアドレス

optional email: string;

エクスポート?

optional exports: {
  facebook: number;
  instagram: number;
  livejournal: number;
  twitter: number;
};
Facebook?
optional facebook: number;
Instagram?
optional instagram: number;
LiveJournal?
optional livejournal: number;
Twitter?
optional twitter: number;

first_name: string;

名(奪格)?

optional first_name_abl: string;

名(与格)?

optional first_name_acc: string;

名(属格)?

optional first_name_dat: string;

名(生格)?

optional first_name_gen: string;

名(具格)?

optional first_name_ins: string;

名(主格)?

optional first_name_nom: string;

フォロワー数?

optional followers_count: number;

友達の状態?

optional friend_status: 0 | 2 | 1 | 3;

ゲーム

optional games: string;

携帯電話あり?

optional has_mobile: 0 | 1;

写真あり?

optional has_photo: 0 | 1;

出身地?

optional home_town: string;

ID

id: number;

興味?

optional interests: string;

非公開?

is_closed: boolean;

お気に入り?

optional is_favorite: 0 | 1;

友達?

optional is_friend: 0 | 1;

フィードに非表示?

optional is_hidden_from_feed: 0 | 1;

インデックスなし?

optional is_no_index: 0 | 1;

last_name: string;

姓(奪格)?

optional last_name_abl: string;

姓(与格)?

optional last_name_acc: string;

姓(属格)?

optional last_name_dat: string;

姓(生格)?

optional last_name_gen: string;

姓(具格)?

optional last_name_ins: string;

姓(主格)?

optional last_name_nom: string;

最終アクセス?

optional last_seen: {
  platform:   | 2
     | 1
     | 5
     | 3
     | 4
     | 6
     | 7;
  time: number;
};
プラットフォーム?
optional platform: 
  | 2
  | 1
  | 5
  | 3
  | 4
  | 6
  | 7;
時間?
optional time: number;

旧姓?

optional maiden_name: string;

軍歴?

optional military: {
  country_id: number;
  from: number;
  unit: string;
  unit_id: number;
  until: number;
};
国コード
country_id: number;
期間開始?

optional from: number;
部隊
unit: string;
部隊ID
unit_id: number;
期間終了?

optional until: number;

映画

optional movies: string;

音楽

optional music: string;

ニックネーム?

optional nickname: string;

職業?

optional occupation: {
  id: number;
  name: string;
  type: "work" | "school" | "university";
};
ID?
optional id: number;
名前?
optional name: string;
タイプ?

optional type: "work" | "school" | "university";

オンライン?

optional online: 0 | 1;

オンラインアプリ?

optional online_app: number;

オンラインモバイル?

optional online_mobile: 0 | 1;

個人情報?

optional personal: {
  alcohol:   | 2
     | 1
     | 5
     | 3
     | 4;
  inspired_by: string;
  langs: string[];
  life_main:   | 2
     | 1
     | 5
     | 3
     | 4
     | 6
     | 7
     | 8;
  people_main:   | 2
     | 1
     | 5
     | 3
     | 4
     | 6;
  political:   | 2
     | 1
     | 5
     | 3
     | 4
     | 6
     | 7
     | 8
     | 9;
  religion: string;
  smoking:   | 2
     | 1
     | 5
     | 3
     | 4;
};
アルコール?
optional alcohol: 
  | 2
  | 1
  | 5
  | 3
  | 4;
影響を受けたもの?
optional inspired_by: string;
言語?
optional langs: string[];
生活の中心?

optional life_main: 
  | 2
  | 1
  | 5
  | 3
  | 4
  | 6
  | 7
  | 8;
人間関係の中心?

optional people_main: 
  | 2
  | 1
  | 5
  | 3
  | 4
  | 6;
政治的見解?
optional political: 
  | 2
  | 1
  | 5
  | 3
  | 4
  | 6
  | 7
  | 8
  | 9;
宗教?
optional religion: string;
喫煙?
optional smoking: 
  | 2
  | 1
  | 5
  | 3
  | 4;

photo_100

photo_100: string;

photo_200?

optional photo_200: string;

photo_200_orig?

optional photo_200_orig: string;

photo_400?

optional photo_400: string;

photo_400_orig?

optional photo_400_orig: string;

photo_50?

optional photo_50: string;

photo_id?

optional photo_id: string;

photo_max?

optional photo_max: string;

photo_max_orig?

optional photo_max_orig: string;

quotes?

optional quotes: string;

relation?

optional relation: 
  | 0
  | 2
  | 1
  | 5
  | 3
  | 4
  | 6
  | 7
  | 8;

relation_partner?

optional relation_partner: {
  can_access_closed: boolean;
  deactivated: string;
  first_name: string;
  hidden: number;
  id: number;
  is_closed: boolean;
  last_name: string;
};
can_access_closed?
optional can_access_closed: boolean;
deactivated?
optional deactivated: string;
first_name
first_name: string;
hidden?
optional hidden: number;
id
id: number;
is_closed?
optional is_closed: boolean;
last_name
last_name: string;

relatives?

optional relatives: {
  id: number;
  name: string;
  type:   | "parent"
     | "child"
     | "grandparent"
     | "grandchild"
     | "sibling";
  }[];

schools?

optional schools: {
  city: number;
  class: string;
  country: number;
  id: string;
  name: string;
  speciality: string;
  type: number;
  type_str: string;
  year_from: number;
  year_graduated: number;
  year_to: number;
  }[];

screen_name?

optional screen_name: string;

sex?

optional sex: 0 | 2 | 1;

site?

optional site: string;

status?

optional status: string;

status_audio?

optional status_audio: {
  access_key: string;
  album_id: number;
  artist: string;
  date: number;
  duration: number;
  genre_id: number;
  id: number;
  owner_id: number;
  performer: string;
  title: string;
  url: string;
};
access_key?
optional access_key: string;
album_id?
optional album_id: number;
artist
artist: string;
date?
optional date: number;
duration
duration: number;
genre_id?
optional genre_id: number;
id
id: number;
owner_id
owner_id: number;
performer?
optional performer: string;
title
title: string;
url?
optional url: string;

timezone?

optional timezone: number;
optional trending: 0 | 1;

tv?

optional tv: string;

universities?

optional universities: {
  chair: number;
  chair_name: string;
  city: number;
  country: number;
  education_form: string;
  education_status: string;
  faculty: number;
  faculty_name: string;
  graduation: number;
  id: number;
  name: string;
  university_group_id: number;
  }[];

verified?

optional verified: 0 | 1;

wall_default?

optional wall_default: "all" | "owner";

default()

default<P>(options): OAuthConfig<P>

VKログインをページに追加します。

セットアップ

コールバックURL

https://example.com/api/auth/callback/vk

設定

import { Auth } from "@auth/core"
import VK from "@auth/core/providers/vk"
 
const request = new Request(origin)
const response = await Auth(request, {
  providers: [VK({ clientId: VK_CLIENT_ID, clientSecret: VK_CLIENT_SECRET })],
})

リソース

注意事項

デフォルトでは、Auth.jsはVKプロバイダーがOAuth 2仕様に基づいていると想定しています。

💡

VKプロバイダーにはデフォルトの設定が用意されています。使用ケースに合わせてデフォルトの設定をオーバーライドするには、組み込みOAuthプロバイダーのカスタマイズをご覧ください。

デフォルトでは、プロバイダーはAPIの5.126バージョンを使用します。詳細については、https://vk.com/dev/versionsを参照してください。異なるバージョンを使用する場合は、プロバイダーのオプションオブジェクトに渡すことができます。

const apiVersion = "5.126"
providers: [
  Vk({
    accessTokenUrl: `https://oauth.vk.com/access_token?v=${apiVersion}`,
    requestTokenUrl: `https://oauth.vk.com/access_token?v=${apiVersion}`,
    authorizationUrl:
      `https://oauth.vk.com/authorize?response_type=code&v=${apiVersion}`,
    profileUrl: `https://api.vk.com/method/users.get?fields=photo_100&v=${apiVersion}`,
  })
]

免責事項 デフォルト設定のバグを発見したと思われる場合は、問題を報告してください。

Auth.jsは厳密に仕様に準拠しており、プロバイダーによる仕様からのずれに対して責任を負うことはできません。問題を報告することはできますが、問題が仕様への非準拠である場合、解決策を追求しない場合があります。ディスカッションでさらにヘルプを依頼できます。

型パラメーター

型パラメーター
P extends Record<string, any>VkProfile

パラメーター

パラメーター
optionsOAuthUserConfig<P>

戻り値

OAuthConfig<P>

Auth.js © Balázs Orbán and Team -2024